プレイヤーの反転

フリーのキャラクター画像は左右のどちらかを向いて書かれていることが多い。
進む方向にキャラクターを向かせたい場合は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
	
コメントを残す 0

Your email address will not be published. Required fields are marked *