*Player ์์ ์ด๋/ํ์ ๋ฐฉ๋ฒ
1) custom package ๋ถ๋ฌ์ค๊ธฐ
Asset > Import Package > Custom Package ์์ package ๋ถ๋ฌ์ค๊ธฐ
2) Sceneํ๋ฉด์ Player ์์ ์ด๋/ํ์
์ค๋ฅธ์ชฝ ํด๋ฆญํ ์ํ์์ WASD ํค๋ฅผ ์ฌ์ฉํด ํ๋ฉด ํฌ์ปค์ค ์ด๋.
Alt ํค + ์ค๋ฅธ์ชฝ ๋๋๊ทธ๋ก ๋ณด์ด๋ ํ๋ฉด xyz ํ์
Scene Tool์ View Tool ๊ณผ ๋์ผํ ๊ธฐ๋ฅ
3) ๊ฐ์ฒด ๋น๊ฒจ์ ์ด์ ๋ง์ถ๊ธฐ
๊ฐ์ฒด๋ฅผ ์ ํํ ์ํ์์ ์ฌ(Scene) ๋ทฐ์ ๋ง์ฐ์ค ์ปค์๋ฅผ ๋๊ณ Fํค๋ฅผ ๋๋ฌ ์ด์ ์ ๋ง์ถ ์ ์๋ค.
๊ฐ์ฒด ๋๋ธ ํด๋ฆญํ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ
4) Trasform Position reset
Trasnform ์ 3๊ฐ ํด๋ฆญ > Reset Property > Position ํด๋ฆญ
5) Tools
View Tool: ๋๋๊ทธํ์ฌ Player ์์ ์ด๋/ํ์
Move Tool: xyz ํ์ดํ๋ก ๊ฐ์ฒด ์ด๋
Rotate Tool: ๊ฐ์ฒด xyz ํ์
Scale Tool: ํฌ๊ธฐ์กฐ์
Rect Tool: ํฌ๊ธฐ, pivot ์กฐ์
Transform Tool: move, rotate, rect ํด ๋ชจ๋๋ฅผ ํฉํ ๊ฒ
ํด๋ฆญ๋ ๋์ง๋ง QWERTY ํค๋ก ์กฐ์ ๊ฐ๋ฅํ๋ค.
*Player ์กฐ์ํ๊ธฐ
1) ๋ฌผ๋ฆฌ ์ ์ฉ
๋ฌผ์ฒด์ ๋ฌผ๋ฆฌ๋ฅผ ์ ์ฉํ๋ ค๋ฉด Rigidbody ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
๋ฌผ์ฒด์ ์ถฉ๋์ ์ ์ฉํ๋ ค๋ฉด Collider ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
- Rigidbody: ๋ฌผ๋ฆฌ๋ ฅ์ ์ ์ด ํ์ ๋์ํ๊ฒ ํ๋ ๊ฒ.
Mass: Object์ ๋ฌด๊ฒ. kg๋จ์.
Drag: ํ์ ๋ฐ์ ๋์ํ ๋ Object์ ๊ฐํด์ง๋ ๊ณต๊ธฐ ์ ํญ๋ ฅ ์ ๋. 0์ ์ ํญ๋ ฅ์ด ์๋ ์ํ.
Argular Drag: ํ์ ๋ ฅ์ ์ํด ํ์ ์ ์ค๋ธ์ ํธ์ ๊ฐํด์ง๋ ๊ณต๊ธฐ ์ ํญ๋ ฅ์ ์ ๋. 0์ ์ ํญ๋ ฅ์ด ์๋ ์ํ.
Use Gravity: ์ค๋ ฅ์ ์ํฅ์ ๋ฐ์ ๊ฒ์ธ์ง์ ๋ํ ์ ๋ฌด
is Kinematic: ์ธ๋ถ์์ ๊ฐํด์ง๋ ๋ฌผ๋ฆฌ์ ํ์ ๋ฐ์ํ์ง ์๋ ์ค๋ธ์ ํธ๋ผ๋ ์๋ฏธ.
...
- Collider: ๋ฌผ๋ฆฌ ์ถฉ๋์ฒ๋ฆฌ๋ฅผ ์ํ ์ค๋ธ์ ํธ์ ํํ
is Trigger๋ฅผ ์ฒดํฌํ์ง ์์ผ๋ฉด ๋ค๋ฅธ collider๊ฐ ๋ฌผ์ฒด๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ ์ฅ์ ๋ฌผ์ ๋ง๋ค ์ ์์.
is Trigger๋ฅผ ์ฒดํฌํ๋ฉด ๋ค๋ฅธ collider๊ฐ ํต๊ณผ์ํค๋ ์ง๋๊ฐ๋ ๋ฌผ์ฒด๋ฅผ ๊ฐ์งํจ.
2) ๋๋ ฅ ๋ง๋ค๊ธฐ
- transform ๊ฐ ๋ฐ๊พธ๋ ํจ์(๊ฐ์ฒด ์ด๋)
//์์ผ๋ก ์ด๋
transform.Translate(0, 0, 1);
transform.Translate(Vector3.forward);
์ ์ฝ๋๋ก ์คํํ๋ฉด Update๋ฌธ์์ ์ปดํจํฐ ์ฌ์์ ๋ฐ๋ผ ์ผ๊ด๋์ง ์๋ ์๋๋ฅผ ๋ณด์ฌ์ค๋ค.
-> ์ฐจ๋์๋ ์กฐ์ ํ๊ธฐ. ์ด๋น ์์ง์ด๋๋ก ํ๊ธฐ.
Update() ๋ฌธ์ ์ปดํจํฐ ์ฌ์์ ๋ฐ๋ผ 1์ด๋น 20-60 ํ๋ ์์ ํธ์ถํ๋ค. ๋ฐ๋ผ์ ์ปดํจํฐ ์ฌ์์ ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณผ ์ ์๋ค.
Time.deltaTime์ ํ๋ ์ ๊ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ ์๋ฏธํ๋ค. ์ด๋๊ฐ * Time.deltaTime์ update() ๋ฌธ์ ์ฌ์ฉํ๋ฉด ํ๋ ์ ๊ฐ ๊ฑธ๋ฆฐ ์๊ฐ๋ง ์๋์ ์ํฅ์ ์ฃผ๋ฏ๋ก ํ๋ ์๊ณผ ๊ด๊ฒ์์ด ์ผ๊ด๋ ์ฑ๋ฅ์ ์ ์งํ ์ ์๋ค.
* Time.deltaTime: ๋ง์ง๋ง ํ๋ ์์์ ํ์ฌ ํ๋ ์๊น์ง์ ๊ฐ๊ฒฉ(์ด)
private void Update() {
transform.Translate(Vector3.forward * Time.deltaTime * 20);
}
3) ์นด๋ฉ๋ผ์ ์์ ์ ์๋์ฐจ ์๋ก ๋ฐ๋ผ๋ค๋๋๋ก ํ๋ ๋ฒ
์นด๋ฉ๋ผ์ ์์น๋ฅผ player(์๋์ฐจ) ์์น๋ก ๋ง์ถ๋ฉด ๋๋๋ฐ, ํ์ฌ ์นด๋ฉ๋ผ ์์น๋งํผ ๋ํ ๊ฐ์ ์์น์์ผ์ฃผ๋ฉด ๋๋ค.
Vehicle(์๋์ฐจ)์ ์์น๋ Vector3(0,0,0)์ธ๋ฐ Main Camera์ ์์น๊ฐ Vector3(0,6,-10) ์ด๋ฏ๋ก ์นด๋ฉ๋ผ์ ์์น๋ฅผ ์๋์ฐจ ์์น์์ (0,6,-10) ๋งํผ ๋ํ ์์น๋ก ์ ์ง์์ผ์ฃผ๋ฉด ๋๋ค.
using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
[SerializeField] private GameObject player;
private Vector3 offset = new Vector3(0, 6, -10);
void Update(){
transform.position = player.transform.position + offset;
}
}
4) ๋ฒ๋ฒ ์ด๋ ๋ฌธ์ ํด๊ฒฐ
using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
[SerializeField] private GameObject player;
private Vector3 offset = new Vector3(0, 6, -10);
void LateUpdate(){
transform.position = player.transform.position + offset;
}
}
Update() vs LateUpdate()
Update(): ์ฐจ๋๊ณผ ์นด๋ฉ๋ผ๊ฐ ๋์์ ์์ง์
LateUpdate(): Update()๋ฌธ ์ดํ์ ํธ์ถ๋จ. ์ฆ, Update()๋ฌธ์ผ๋ก ์ฐจ๋์ด ๋จผ์ ์ด๋ํ ํ LateUpdate()๋ฌธ์ผ๋ก ์นด๋ฉ๋ผ๊ฐ ์ฐจ๋์ ๋ฐ๋ผ๊ฐ.
5) Play Mode ์๊น ์ง์ ํ๋ ๋ฒ
mac ๊ธฐ์ค. Unity > Preferences > Colors > Playmode tint
6) ํค๋ณด๋ ๋ฐฉํฅํค๋ก ์ข์ฐ์ํ ์ด๋ ์ ์ฉํ๊ธฐ
mac ๊ธฐ์ค Edit > Project Setting > Input Manager > Axes > Horizontal
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private const float SPEED = 5.0f;
private const float TURN_SPEED = 2f;
private float horizontalInput;
private float forwardInput;
private void Update() {
horizontalInput = Input.GetAxis("Horizontal");
forwardInput = Input.GetAxis("Vertical");
transform.Translate(Vector3.forward * Time.deltaTime * SPEED * forwardInput);
transform.Translate(Vector3.right * Time.deltaTime * TURN_SPEED * horizontalInput);
}
}
Vector3.forward = Vector3(0, 0, 1)
Vector3.right = Vector3(1, 0, 0)
Input.GetAxis() ํจ์ ์์ Input ํค์ ์ด๋ฆ์ ์ง์ ํด์ฃผ๋ฉด ๋๋๋ฐ, Input Manager์ ์๋ Horizontal, Vertical์ Name๊ณผ ๋๊ฐ์ด ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
Update() ๋ฌธ์์ horizontalInput, Vertical ๊ฐ์ ์ถ๊ฐ๋ก ๊ณฑํด์ค์ ๋ฐฉํฅํค์ A,D,W,Sํค๋ก ์ข์ฐ์ํ ์ด๋์ด ๊ฐ๋ฅํด์ก๋ค.
์ฐธ๊ณ ) ์กฐ์ด์คํฑ ๊ฐ์ ๋ฒ์๋ -1 ~ 1 ์ฌ์ด์ ๊ฐ์ด ์ ๋ ฅ๋๋ค.
์ฐจ๋์ ํ์ ํ๋ฉฐ ์ข์ฐ์ด๋ํ๊ณ ์ถ์ผ๋ฉด Rotate() ํจ์๋ ์ถ๊ฐํด์ฃผ๊ธฐ !
transform.Rotate(Vector3.up, Time.deltaTime * TURN_SPEED * horizontalInput);
'๐ฎ Unity Study > Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unity Associate Programmer ์๊ฒฉ์ฆ ์ค๋น] 2๊ฐ. ๋๋ฌผ ๋จน์ด์ฃผ๊ธฐ ๊ฒ์ (0) | 2023.05.20 |
---|---|
[Unity Associate Programmer ์ธ์ฆ์ํ] ์๊ฒฉ์ฆ ๋ฐ ์ํ์ผ์ ์ ์ฒญ๋ฐฉ๋ฒ (0) | 2023.05.17 |
[Unity] ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ํ ์์ ๊ด๋ฆฌ (2) | 2023.04.17 |
[Unity] IL2CPP, Mono, JIT (1) | 2023.04.17 |
[Unity] Texture Compression ๋ฐฉ์ (0) | 2023.04.13 |