using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
[SerializeField] private float moveSpeed = 1f;
private PlayerControls playerControls;
private Vector2 movement;
private Rigidbody2D rb;
private Animator myAnimator;
private SpriteRenderer mySpriteRenderer;
private void Awake()
{
playerControls = new PlayerControls();
rb = GetComponent<Rigidbody2D>();
myAnimator = GetComponent<Animator>();
mySpriteRenderer = GetComponent<SpriteRenderer>();
}
private void OnEnable()
{
playerControls.Enable();
}
private void OnDisable()
{
playerControls.Disable();
}
private void Update()
{
playerInput();
}
private void FixedUpdate()
{
Move();
PlayerFlip();
}
private void playerInput()
{
movement = playerControls.Player.Move.ReadValue<Vector2>();
myAnimator.SetFloat("moveX", movement.x);
myAnimator.SetFloat("moveY", movement.y);
}
private void Move()
{
rb.MovePosition(rb.position + movement * (moveSpeed * Time.fixedDeltaTime));
}
private void PlayerFlip()
{
if (movement.x > 0)
{
mySpriteRenderer.flipX = true;
}
else if (movement.x < 0)
{
mySpriteRenderer.flipX = false;
}
}
}
요코드에서 밑에 부분 스프라이트 flipx하면 자식 오브젝트에는 flip적용이 안된데서
private void PlayerFlip()
{
if (movement.x > 0)
{
transform.Rotate(0f, 180f, 0f);
}
}
요걸로 바꿨는데 코드의 다른부분이랑 충돌하는지 x<0일때는 아무 문제 없는데 조건이 충족되는 x>0에서는 flip되고 안되고가 무한 반복됨 뭔 문제일까(위에 sprite flip 했을때는 잘작동했었음)
flip하면 좌표계도 반대로 적용됨
그래서 자식인 스프라이트를 부모의 좌표계를 기준으로 flip해야됨 말 이상하게 했는데 아무튼 내가 해보니까 그럼