プレイヤーの反転
フリーのキャラクター画像は左右のどちらかを向いて書かれていることが多い。
進む方向にキャラクターを向かせたい場合はflip_hで反転させる。
右向きのキャラクターならマイナス方向(左)に動いたらspriteを反転
if direction.x > 0:
mordred.flip_h = false
elif direction.x < 0:
mordred.flip_h = trueキャラクターが1つの画像ではなく複数に分かれている(キャラと衣装、キャラと武器など)場合はflip_hでは上手く反転しないのでscaleを使用する
親ノードをScaleで反転させるのでノードに含まれるものすべてが反転する。
剣を持つキャラクターで剣にCollisionを設定している場合も有効
extends CharacterBody2D
const SPEED = 100.0
var direction:Vector2
var is_face_right: bool = false
var was_face_right: bool = false
func _physics_process(delta: float) -> void:
direction.x = Input.get_axis("move_left", "move_right")
direction.y = Input.get_axis("move_up", "move_down")
if direction:
velocity = direction.normalized() * SPEED
else :
velocity = Vector2.ZERO
if direction.x > 0:
was_face_right = false
elif direction.x < 0:
was_face_right = true
if is_face_right != was_face_right:
set_flip_h()
move_and_slide()
func set_flip_h():
is_face_right = !is_face_right
scale.x = abs(scale.x) * -1