저번글 [Unity] x값 이동 애니메이션 에서 캐릭터의 애니메이션까지 구현되었다.
하지만 화면 밖으로 캐릭터가 나가게되어, 이를 해결하기 위해 캐릭터가 화면을 넘지 않도록 조건문을 추가해주었다.
조건문을 통한 범위 지정
float direction = 0.05f;
void Start()
{
Application.targetFrameRate = 60;
}
void Update()
{
if(transform.position.x > 2.6f)
{
direction = -0.05f;
}
if(transform.position.x< -2.6f)
{
direction = 0.05f;
}
transform.position += Vector3.right * direction;
}
코드를 보면 direction이라는 변수를 선언하고,
x값(Vector3.right)에 direction을 곱해 캐릭터의 위치값을 계속 변경시켜준다.
캐릭터가 오른쪽 화면밖으로 나가지 않도록 x값이 2.6초과일 경우 direction값을 음수로 바꿔 왼쪽으로 캐릭터가 이동할 수 있도록 한다.
마찬가지로 캐릭터가 왼쪽화면 밖으로 나가지 않도록 x값이 -2.6미만일 경우 direction값을 양수로 바꿔 오른쪽으로 캐릭터가 이동할 수 있도록 한다.
flip으로 캐릭터 이미지 방향 바꾸기
위 코드까지 진행하면 캐릭터가 화면 밖으로 나가진 않지만, 계속 오른쪽을 보면서 걷는 이상한 행동을 하는 캐릭터가 되어버린다.
따라서 우리는 왼쪽으로 갈 때는 왼쪽 방향을 볼 수 있도록 이미지를 좌우반전 시켜줄 것이다.
이를 위해서 Inspector창 안의 Flip > X에 체크를 해주면, 좌우반전이 되는 것을 확인할 수 있다.
이제 이 Flip을 코드로 구현해보자.
public class Rtan : MonoBehaviour
{
float direction = 0.05f;
SpriteRenderer renderer;
// Start is called before the first frame update
void Start()
{
Application.targetFrameRate = 60;
renderer = GetComponent<SpriteRenderer>(); //컴포넌트를 가지고 올 수 있는 기능(=메서드,함수)
}
// Update is called once per frame
void Update()
{
if(transform.position.x > 2.6f)
{
renderer.flipX = true;
direction = -0.05f;
}
if(transform.position.x< -2.6f)
{
renderer.flipX = false;
direction = 0.05f;
}
transform.position += Vector3.right * direction;
}
}
renderer를 선언한 후 컴포넌트를 가지고 올 수 있는 GetComponent를 호출한다.
이때 주의할 점은 불러오는 항목이 스크립트가 붙어있는 곳과 같은 곳에 있어야 한다는 것이다.
즉, Rtan스크립트가 붙어있는 Inspector 창에 호출되는 요소가 들어있어야한다는 뜻이다.
이렇게 하면 캐릭터가 이렇게 화면 안에서만 움직이게 된다!✨
'GameDevelop > Unity기초쌓기' 카테고리의 다른 글
[Unity] 중력,충돌로 빗방울구현 Rigidbody,Collider (0) | 2025.03.27 |
---|---|
[Unity] 마우스 왼쪽 클릭시 캐릭터 방향전환 renderer.flipX, GetMouseButtonDown (0) | 2025.03.25 |
[Unity] x값 이동 애니메이션 (0) | 2025.03.20 |
[Unity] 스크립트 생성 (0) | 2025.03.20 |
[Unity] 애니메이션 (0) | 2025.03.19 |