Player가 자식 오브젝트까지 오른쪽(스프라이트를 강제로 좌우 반전 시켰을 때 콜라이더가 반대로 생성되어 수정)을 바라볼 수 있도록 코드 수정

This commit is contained in:
Mingu Kim
2025-08-22 21:23:07 +09:00
parent cf41a64529
commit 8790e3982a
3 changed files with 21 additions and 5 deletions

View File

@@ -26,7 +26,7 @@ public class PlayerMove : MonoBehaviour
RigidBody = GetComponent<Rigidbody2D>();
SpriteRenderer = GetComponent<SpriteRenderer>();
Animator = GetComponent<Animator>();
// Null 체크 추가
if (RigidBody == null || SpriteRenderer == null || Animator == null)
{
@@ -36,12 +36,22 @@ public class PlayerMove : MonoBehaviour
return;
}
// 캐릭터의 기본 방향을 오른쪽으로 설정
Vector3 initialScale = transform.localScale;
initialScale.x = -1f;
transform.localScale = initialScale;
_stateMachine = new StateMachine(State.IDLE, this);
// 공격 콜라이더 참조
attackCollider = GetComponentInChildren<Collider2D>();
}
void Start()
{
}
private void Update()
{
_stateMachine.Update();

View File

@@ -121,7 +121,11 @@ public class MoveState : IState
float horizontalInput = Input.GetAxisRaw("Horizontal");
if (horizontalInput != 0)
{
_player.SpriteRenderer.flipX = horizontalInput > 0;
// transform.localScale.x를 사용하여 캐릭터와 자식 오브젝트를 함께 뒤집습니다.
// 기본 스프라이트가 왼쪽을 바라보고 있으므로, 오른쪽 이동 시 x 스케일을 뒤집어야 합니다.
Vector3 newScale = _player.transform.localScale;
newScale.x = horizontalInput > 0 ? -1f : 1f;
_player.transform.localScale = newScale;
}
_player.RigidBody.AddForce(Vector2.right * horizontalInput * _player.maxSpeed, ForceMode2D.Force);
@@ -170,7 +174,9 @@ public class JumpState : IState
{
if (Input.GetButton("Horizontal"))
{
_player.SpriteRenderer.flipX = Input.GetAxisRaw("Horizontal") > 0;
Vector3 newScale = _player.transform.localScale;
newScale.x = Input.GetAxisRaw("Horizontal") > 0 ? -1f : 1f;
_player.transform.localScale = newScale;
}
}