【Godotで作ろう脱衣ブロック崩し】第4回:パドルを作ろう
このたびは、Godot Engineチュートリアル記事「Godotで作ろう脱衣ブロック崩し」にアクセスいただき、ありがとうございます。
目次はこちらです。
今回は、プレイヤーの操作を受けるパドルを作りましょう。
4.パドルの作成
4.1:パドルシーンのノード構成
前回までの作業を終えたプロジェクトを開き、新規シーンを作成します。
このシーンのルートノードはCharacterBody2Dに設定し、その子ノードとしてCollisionShape2DとSprite2Dを配置します。
4.2:各ノードの設定
CollisionShape2DのインスペクターからShapeをCapsuleShape2Dに設定します。
CapsuleShape2DのRadiusを17px、Heightを180px、そこから少し下のNode2D -> TransformのRotationを90度に設定しましょう。
Sprite2DのインスペクターからTextureをpaddleフォルダ内のpaddle.svgに設定します。
CharacterBody2DのインスペクターからCollisionObject2D -> CollisionのLayerを2番のみ、Maskを1番と3番のみに設定します。
それで、CharacterBody2Dの名前を"paddle"に書き換えて、このシーンを"paddle.tscn"という名前でpaddleフォルダ内に保存してください。
4.3:スクリプトのアタッチおよび新規作成
paddleノードにスクリプトを新規でアタッチして、以下のように記述します。
#このクラスはCharacterBody2Dを継承している
extends CharacterBody2D
#このクラスに名前はない
#speed:マウスカーソルへの追従度
@export var speed = 20.0
#minimum_distance:追従する最小距離
@export var minimum_distance = 8.0
func _physics_process(delta):
#hook:追従すべきマウスカーソルのx座標
var hook = get_viewport().get_mouse_position().x
#distance:現在の位置と追従先の距離
var distance = hook - position.x
#距離が最小未満だったらブレーキをかける
if abs(distance) < minimum_distance:
velocity.x = move_toward(distance, 0.0, speed)
#距離が最小以上だったら距離に比例した速度を設定する
else:
velocity.x = distance * speed
#y座標は動かさない
velocity.y = 0.0
#当たり判定をしつつ所定の速度で動かす
move_and_collide(velocity * delta)
おわりに
今回の作業はここまでです。お疲れさまでした。
次回の更新は、早くて8月中旬、遅くとも8月下旬には公開する予定です。
お楽しみにお待ちください。