์ด๋ค ๊ธ๋ถํฐ ์ฌ๋ฆฌ๋ฉด ์ข์๊น ํ๋ค๊ฐ ์์ฆ ์ ๋ํฐ ๊ณต๋ถ ์ ํ ์ง ๊ฝค ์ค๋๋์๊ณ , ๊น๋จน์ ์ ์๋ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ๋ค ๋ค์ ๋๋์๋ณด๋ค๋ ์๋ฏธ์์ ์จ๋ณด๋ ค๊ณ ํ๋ค.
๊ทธ๋ผ ๋ฐ๋ก ๋ณธ๋ก ์ผ๋ก..
[๋ฌผ์ฒด๋ฅผ ์์ง์ฌ๋ณด๊ธฐ]
์ด๋ฏธ์ง ์ถ์ฒ:https://www.gamemeca.com/view.php?gid=1492066
๋ณดํต PC์์ ๋์๊ฐ๋ RPG ๊ฒ์์ธ ๊ฒฝ์ฐ ํค๋ณด๋์ W,A,S,D ํค๋ฅผ ์ด์ฉํด์ ์บ๋ฆญํฐ๋ฅผ ์กฐ์ํ๋ค.
Unity๋ ์ ๋ฌธ ๊ฒ์์์ง์ด๋ ๊ทธ์ ๋ ๊ธฐ๋ฅ์ด์ผ ์์์ ๋ผ๊ฒ ์ง? ๋ผ๋ ์๊ฐ์ ํ์ง๋ง์
์บ๋ฆญํฐ๋ฅผ ์ถ๊ฐํ๊ณ ํ๋ํ๋ ํค๊ฐ ์ ๋ ฅ๋์ ๋ ๊ฐ์งํ๋ ๋ช ๋ น์ด, ๊ฐ์งํ์ผ๋ฉด ๋ฐ์ํ๋ ๋ช ๋ น์ด
๊ตฌํ์ ํด์ค์ผ ํ๋ค.
์ฐ์ ์ ๋ํฐ์์ ํ๋ธ(Cube)์ ํ๋ ์ธ(Plane)์ ์ถ๊ฐํ๊ณ ํ๋ธ์ Rigidbody ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ๋ค.
Rigidbody๋ฅผ ์ถ๊ฐํ ๋ Add Component์์ Rigidbody๋ฅผ ๊ฒ์ํด์ ํ๋ค.
์ฌ๊ธฐ์์ Rigidbody๋ฅผ ์ถ๊ฐํ๊ณ
์ฌ๊ธฐ์ Rigidbody๊ฐ ๋ Box collider๋ ํท๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ
Rigidbody๋ ๋ฌผ์ฒด์ ํ... ๋ง๊ทธ๋๋ก ๋ฌผ์ฒด์ ๋ฌผ๋ฆฌํ์์ ์ ์ฉํด์ฃผ๊ณ
Box Collider์์ collider = ์ถฉ๋์ฒด ์ฆ, ๋ฌผ์ฒด์ ๋จ๋จํจ๊ณผ ์ถฉ๋์ฑ์ ์ ์ฉํด์ค๋ค
๊ทธ๋ฆฌ๊ณ
Mesh Renderer ๋ ๋น์ ์ํ ๋ฌผ์ฒด์ ๋ชจ์์ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ๋ค.
์ด์ C#์คํฌ๋ฆฝํธ ํ์ผ ํ๋๋ฅผ ์์ฑํ๋ค.
์คํฌ๋ฆฝํธํ์ผ์ด ์์ฑ๋์ผ๋ฉด ์ด์ด์ฃผ๊ณ ์๋ ์ฝ๋ ๋ด์ฉ๋ค์ ์ถ๊ฐํ๋ค.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
Rigidbody myRigid;
Vector3 playerPosition;
static float moveSpeed = 1.0f;
void Start()
{
myRigid=GetComponent<Rigidbody>();
//Rigidbody๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ํ๋ธ ์ค๋ธ์ ํธ์ ๋ฌ๋ ค์๋
//Rigidbody์ปดํฌ๋ํธ๋ฅผ ๋ฃ์
}
void Update()
{
Movement();
//๋งค ํ๋ ์ ํธ์ถ๋๋ Update()๋ฌธ์์ ๋์์
//Movement()๋ฉ์๋๊ฐ ํธ์ถ๋จ.
}
public void Movement()
{
playerPosition = this.transform.position;
//์ด ๋ฌผ์ฒด๋ฅผ ์์ง์ด๋ ์์๊ฐ ์ค๋ก์ง Rigidbody์ WASD ๋ฟ๋ง ์๋๋ผ
//Use gravity๋ฅผ ์ฌ์ฉํด์ ์ค๋ ฅ์ด์ ์ฉ ๋๊ธฐ ๋๋ฌธ์
//์ค๋ ฅ์ ์ํ ๋ณํ๋ ๊ฐฑ์ ์ ํด๋ฌ์ผ ํ๋ ์ด์ ๋๋ฌธ์ ์ค์ ์์น๋ฅผ ๊ณ์ ์ ์ฉํด์ผํจ.
if (Input.GetKey(KeyCode.W))
{
playerPosition += Vector3.forward * moveSpeed * Time.deltaTime;
//๋ฌผ์ฒด์ ์์น๊ฐ ๊ฐฑ์ ๋๋ฉด ๊ทธ๋ค์ Vector3.forward๋ผ๋ ์ธ๊ณ์ขํ๊ธฐ์ค '์' ๊ฐ๊ณผ, ์๋, ์๊ฐ์ 60๋ถ์1 ์ ๊ณฑํด์ค ํ
//playerPosition์ ๋ํด์ค๋ค.
myRigid.MovePosition(playerPosition);
//์ด์ movePosition๋์ ์๋ก ๊ฐฑ์ ๋ ์์น๋ก ์ด๋๋ ๊ฒ์.
}
if (Input.GetKey(KeyCode.A))
{
playerPosition += Vector3.left * moveSpeed * Time.deltaTime;
myRigid.MovePosition(playerPosition);
}
if (Input.GetKey(KeyCode.S))
{
playerPosition -= Vector3.forward * moveSpeed * Time.deltaTime;
myRigid.MovePosition(playerPosition);
}
if (Input.GetKey(KeyCode.D))
{
playerPosition -= Vector3.left * moveSpeed * Time.deltaTime;
myRigid.MovePosition(playerPosition);
}
}
}
์ด์ ์ ์ฅํ๊ณ ์์ง์ฌ๋ณด๋ฉด
์์ฑ!
<๋ฌธ์ ์ >
1.W,A ๋์์ ๋๋ฌ์ ๋ถ-์ ์ชฝ์ผ๋ก ์ด๋ํ ๋ ์๋๊ฐ ๋นจ๋ผ์ง๋ค
2.์์ง์์ด ๋๋ฌด ๋ฑ๋ฑํ๋ค.
๋ฌธ์ ์ ์ ๋ํด์๋ ๋ค์ ํฌ์คํฐ์์ ๋ค๋ฃจ๊ฒ ๋ค.
ํ์ดํ
'๐ฎ Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unity] MovePosition๊ณผ position ์ ์ฐจ์ด (0) | 2020.03.21 |
---|