태그설정 : 예를들어 탄막게임에서 탄알이 충돌한 게임 오브젝트가 플레이어인지 확인하기 위해 사용
- 플레이어 이동 스크립트
public Rigidbody playerRigidbody; // 이동에 사용할 리지드바디 컴포넌트 선언
public float speed = 8.0f; // 이동 속력
void Start()
{
}
void Update()
{
if (Input.GetKey(KeyCode.UpArrow) == true)
{
//위쪽 방향키 입력이 감죄된 경우 z 방향으로 힘주기
playerRigidbody.AddForce(0f, 0f, speed);
}
if (Input.GetKey(KeyCode.DownArrow) == true)
{
//위쪽 방향키 입력이 감죄된 경우 -z 방향으로 힘주기
playerRigidbody.AddForce(0f, 0f, -speed);
}
if (Input.GetKey(KeyCode.RightArrow) == true)
{
//위쪽 방향키 입력이 감죄된 경우 x 방향으로 힘주기
playerRigidbody.AddForce(speed, 0f, 0f);
}
if (Input.GetKey(KeyCode.LeftArrow) == true)
{
//위쪽 방향키 입력이 감죄된 경우 -x 방향으로 힘주기
playerRigidbody.AddForce(-speed, 0f, 0f);
}
}
Input.GetKey() : 지정한 키를 < 누르는 동안 > true를 반환, 아니면 false 반환
Input.GetKeyDown() : 지정한 키를 < 누르는 순간 > true를 반환, 아니면 false 반환
Input.GetKeyUp() : 지정한 키를 < 누르다가 손을 뗀 순간 > true를 반환, 아니면 false 반환
- 플레이어 사망 처리
public void Die(){
// 자신의 게임 오브젝트를 비활성화
gameObject.SetActive(false);
}
# gameObject : 변수 // 컴포넌트 입장에서 자신이 추가된 게임 오브젝트를 가리키는 변수
# GameObject : 타입
SetActive : GameObject 타입에 내장되어 있는 메서드.
- 조작감 개선하기
void Update(){
// 수평축과 수직축의 입력값을 감지하여 저장
float xInput = Input.GetAxis("Horizontal");
float yInput = Input.GetAxis("Vertical");
// 입력값과 이동 속력을 사용해 실제 이동 속도 결정
float xSpeed = xInput * speed;
float ySpeed = yInput * speed;
// Vector3 속도를 (xSpeed, 0, ySpeed)로 생성
Vector3 newVelocity = new Vector3(xSpeed, 0f, ySpeed);
// 리지드바디의 속도에 newVelocity 할당
playerRigidbody.velocity = newVelocity;
}
- Input.GetAxis() : 어떤 축에 대한 입력값을 숫자로 반환하는 메서드
float Input.GetAxis(string AxisName);
# Horizontal 축
수평 축에 대응되는 키
- 음의 방향 : 왼쪽 방향키, A 키
- 양의 방향 : 오른쪽 방향키, D 키
Input.GetAxis("Horizontal")의 출력값
- 왼쪽 방향키, A 키 : -1.0
- 아무것도 누르지 않음 : 0
- 오른쪽 방향키, D 키 : +1.0
# Vertical 축
수직 축에 대응되는 키
- 음의 방향 : 아래쪽 방향키, S 키
- 양의 방향 : 위쪽 방향키, W 키
Input.GetAxis("Vertical")의 출력값
- 아래쪽 방향키, S 키 : -1.0
- 아무것도 누르지 않음 : 0
- 위쪽 방향키, W 키 : +1.0
- Vector3 : 원소 x, y, z를 가지는 타입. 위치, 크기, 속도, 방향 등을 나타낼 때 주로 사용
Vector3 vector = new Vector3(x, y, z);
# Rigidbody의 AddForce()와 velocity의 차이 : AddForce는 관성이 있고, velocity는 관성없이 바로 이동 가능.
| 벡터 (0) | 2024.03.11 |
|---|---|
| UI 앵커 프리셋, 게임 매니저 (1) | 2024.03.05 |
| 리지드바디, 머티리얼, 메인카메라 (0) | 2024.02.14 |
| 캐릭터 AI 구현하기 (0) | 2024.02.10 |
| Navigation 시스템 (0) | 2024.02.09 |