パドルで跳ね返る
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を掛けます。
チャレンジ
中級ball.gdで、ボールがパドルに当たって跳ね返るようにします。
_ready内で、body_enteredを_on_body_enteredに接続します。- 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
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プロジェクトのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド