반응형
Step 2. 플레이어의 이동범위를 제한하기
플레이어가 알아서 메인 카메라의 범위 내에서 움직이면 참 좋겠지만 ㅡㅡ 벗어나서 화면밖으로 없어져 버려요. 이럴땐 플레이어의 이동범위를 제한해서 그 안에서만 움직이게 할수가 있어요.
저번 유니티 강좌에서는 플레이어가 좌우로 움직이는데 거기에 더해서 화면안 범위를 지정해서 그 범위안에서만 움직이도록 하겠습니다.
유니티를 기동시킨후 스크립트를 수정할거에요. 저번에 작성해 놨던 PlayerController.cs를 기동시켜 주세요.
스크립트를 아래와 같이 추가해 주세요.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// 이동가능한 범위
Vector2 m_moveLimit = new Vector2(4.0f, 0);
void Start()
{
}
void Update()
{
Move();
}
void Move()
{
transform.localPosition = ClampPosition(transform.localPosition);
// 왼쪽으로 이동
if(Input.GetKey(KeyCode.LeftArrow))
{
this.transform.Translate(-0.1f, 0, 0);
}
//오른쪽으로 이동
if(Input.GetKey(KeyCode.RightArrow))
{
this.transform.Translate(0.1f, 0, 0);
}
}
public Vector3 ClampPosition(Vector3 position)
{
return new Vector3
(
// 좌우로 움직이는 이동범위
Mathf.Clamp(position.x, -m_moveLimit.x, m_moveLimit.x),
-7f,
0
);
}
}
이동 가능한 범위를 좌우 4.0f만큼 줬어요. y좌표는 어짜피 움직이지 않는거라 0이에요.
Vector2 m_moveLimit = new Vector2(4.0f, 0);
좌우로 움직이는 Move()안에 플레이어의 이동 범위를 제한하는 ClampPosition를 불렀어요.
transform.localPosition = ClampPosition(transform.localPosition);
이제 ClampPosition에 좌우로 움직일때 이동되는 범위를 상세지정했어요. 아래위는 필요할때 아래와 같이 변경해서 사용하시면 되요.
public Vector3 ClampPosition(Vector3 position)
{
return new Vector3
(
// 좌우로 움직이는 이동범위
Mathf.Clamp(position.x, -m_moveLimit.x, m_moveLimit.x),
-7f,
// 필요할때 윗줄의 0 대신 사용 -> 위아래로 움직이는 이동범위 지정
// Mathf.Clamp( position.y, -m_moveLimit.y, m_moveLimit.y ),
0
);
}
스크립트를 저장한 후 실행해서 카메라뷰에서 확인해 보시면 되요.
반응형
'IT Tip > (Unity) 슈팅 게임 만들기' 카테고리의 다른 글
[유니티 게임 만들기] 적을 움직이기 (0) | 2020.12.17 |
---|---|
[유니티 게임 만들기] 레이저 발사 (0) | 2020.12.16 |
[유니티 게임 만들기] 플레이어를 움직이기 (0) | 2020.12.04 |
[유니티 게임 만들기] 게임 프로젝트 설정 (0) | 2020.12.01 |
슈팅 게임 만들기의 개요(게임 설명) (0) | 2020.12.01 |
댓글