Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 2468 c++
- 백준 1103번 게임
- 백준 2870번
- 2870번 수학숙제
- Algorithm
- 코테
- Lv2
- Unity
- 백준 17070번
- 백준 1103번
- 2870번 수학숙제 c++
- C#
- 백준 17070번 c++
- 백준 c++ 2468번
- 오브젝트 풀링
- 코딩테스트
- 백준
- 2870번
- dfs
- 프로그래머스
- 백준 1103번 c++
- 플레이어 이동
- 백준 c++ 2870번
- Lv.3
- 17070번
- 유니티
- 수학숙제
- Beakjoon
- 2870번 c++
- c++
Archives
- Today
- Total
주녘공부일지
[Unity3D] position (위치) // 플레이어 이동 예제 본문
1. 3D 플레이어 이동 구현 ( position )
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] float _speed = 10.0f;
void Update()
{
if (Input.GetKey(KeyCode.W))
transform.position += new Vector3(0f, 0f, 1f) * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.S))
transform.position -= new Vector3(0f, 0f, 1f) * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.A))
transform.position += new Vector3(1f, 0f, 0f) * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.D))
transform.position -= new Vector3(1f, 0f, 1f) * Time.deltaTime * _speed;
}
}
https://docs.unity3d.com/kr/530/ScriptReference/Input.html
2. 예약어 사용 ( Vector3(0f, 0f, 1f) == Vector3.forward ) // 가독성↑
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] float _speed = 10.0f;
void Update()
{
if (Input.GetKey(KeyCode.W))
transform.position += Vector3.forward * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.S))
transform.position += Vector3.back * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.A))
transform.position += Vector3.left * Time.deltaTime * _speed;
if (Input.GetKey(KeyCode.D))
transform.position += Vector3.right * Time.deltaTime * _speed;
}
}
3. 로컬 좌표를 월드 좌표로 변환 ( TransformDirection ) // Local -> World
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] float _speed = 10.0f;
void Update()
{
if (Input.GetKey(KeyCode.W))
transform.position += transform.TransformDirection(Vector3.forward * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.S))
transform.position += transform.TransformDirection(Vector3.back * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.A))
transform.position += transform.TransformDirection(Vector3.left * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.D))
transform.position += transform.TransformDirection(Vector3.right * Time.deltaTime * _speed);
}
}
+ 월드 좌표를 로컬 좌표로 변환 ( InverseTransformDirection ) // World -> Local
4. Translate ( position 변경 함수 : 로컬 좌표계를 기준으로 함 ) // 가독성↑
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] float _speed = 10.0f;
void Update()
{
if (Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.S))
transform.Translate(Vector3.back * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.A))
transform.Translate(Vector3.left * Time.deltaTime * _speed);
if (Input.GetKey(KeyCode.D))
transform.Translate(Vector3.right * Time.deltaTime * _speed);
}
}
'GameDevelopment > [Unity] Class, Pattern' 카테고리의 다른 글
[Unity3D] Rotation (회전) (0) | 2022.02.21 |
---|---|
[Unity3D] Vector3 (0) | 2022.02.21 |
[Unity] 모바일 터치 감지 방법 (0) | 2022.02.16 |
[Unity] 오브젝트 풀링 (Object Pooling) (0) | 2022.02.01 |
[Unity] ForceMode(ForceMode2D) (0) | 2022.01.26 |