난 a를 누르면 평타가 나가면서 앞뒤로 순간이동 했으면 좋겠는데 왜 이렇게 선형적으로 움직이는 걸까??
void Update()
{
bool isFlipped = GetComponent<SpriteRenderer>().flipX;
float direction = GetDirection(isFlipped);
// 입력 받기 (WASD 혹은 방향키)
movement.x = Input.GetAxisRaw("Horizontal");
if (movement.x > 0 )
{
spriteRenderer.flipX = true;
}
else if (movement.x <0)
{
spriteRenderer.flipX = false;
}
// A평타
if (Input.GetKey(KeyCode.A))
{
animator.SetBool("Pariziong_A", true);
}
else
{
animator.SetBool("Pariziong_A", false);
}
//Autoattack 앞뒤 움직임
switch (spriteRenderer.sprite.name)
{
case "pariziong(A,Autoattack1)-Sheet_1":
Vector3 currentPosition1 = rb.position;
Vector3 newPosition1 = new Vector2(currentPosition1.x - 0.02f*direction, currentPosition1.y);
rb.position = newPosition1;
break;
case "pariziong(A,Autoattack1)-Sheet_0":
Vector3 currentPosition0 = rb.position;
Vector3 newPosition0 = new Vector2(currentPosition0.x + 0.02f*direction, currentPosition0.y);
rb.position = newPosition0;
break;
default:
break;
}
UpdateColliderFromSprite();
}
void UpdateColliderFromSprite()
{
if (spriteRenderer != null && boxCollider != null)
{
// 스프라이트의 Bounds를 가져옴
Bounds spriteBounds = spriteRenderer.sprite.bounds;
boxCollider.size = new Vector2(spriteBounds.size.x, spriteBounds.size.y);
// 콜라이더의 크기와 오프셋을 스프라이트의 Bounds에 맞게 설정
// Offset 계산
Vector2 colliderCenter = spriteBounds.center;
Vector2 colliderOffset = colliderCenter;
// Offset 조정
boxCollider.offset = colliderOffset;
}
}
void FixedUpdate()
{
// 물리 기반 이동
rb.velocity = new Vector2(movement.x * moveSpeed, rb.velocity.y);
}
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=168689&page=1