Menu
CoddyTech

パドルで跳ね返る

CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 4/33。

ボールがパドルを通り抜けます。ボールはArea2Dです。パドルのようなボディがボールに触れると、body_enteredシグナルが発火します。そのボディがパドルの場合、ボールを上向きにします。

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	if body.name == "Paddle":
		velocity.y = -abs(velocity.y)

abs()はマイナス記号を取り除くため、-abs(velocity.y)は常に上向きになります。2回目に触れても、ボールが下向きに戻ることはありません。

プレイヤーが狙いを定められるように、ボールが当たった位置に応じてvelocity.xを設定します。position.x - body.position.xは、ボールがパドルの中央からどれだけ離れているかを表します。左半分では負の値、右半分では正の値になります。これに5を掛けます。

challenge icon

チャレンジ

中級

ball.gdで、ボールがパドルに当たって跳ね返るようにします。

  1. _ready内で、body_enteredを_on_body_enteredに接続します。
  2. bodyの名前がPaddleの場合、velocity.xを(position.x - body.position.x) * 5に、velocity.yを-abs(velocity.y)に設定します。

自分で試してみよう

extends Area2D

var velocity = Vector2(110, -280)

func _physics_process(delta):
	position += velocity * delta
	if position.x < 8 or position.x > 632:
		velocity.x = -velocity.x
	if position.y < 42:
		velocity.y = -velocity.y
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

プロジェクトのすべてのレッスン

自分で練習してみよう: Godotプレイグラウンド