2018. 12. 30. 13:48ㆍExample project
Rigid body? Rigid Body 란, 물리 시뮬레이션을 통해서 오브젝트의 위치를 조절합니다.
리지드바디(rigidbody) 컴포넌트는 오브젝트의 위치를 제어합니다. - 중력의 영향에 의해 오브젝트를 아래로 떨어지도록 만들고,
충돌에 대한 오브젝트의 반응의 크기를 계산할 수 있습니다.
리지드바디 파라미터를 다루는 경우에는, FixedUpdate function내에서 작업을 진행해야 합니다.
물리 시뮬레이션은 discrete timesteps단위로 수행됩니다. FixedUpdate function은 각 단계 전에, 즉시 호출됩니다
출처 URL : https://docs.unity3d.com/kr/530/ScriptReference/Rigidbody.html 를 참고하면 편합니다.
쉽게 말해, 오브젝트를 이동시키고 싶을 때 사용하는 컴포넌트 입니다.
리지드 바디의 파라미터를 다룰때는, 일반 Update 함수가 아닌 FixedUpdate 함수 내에서 작업을 하여야 합니다.
Ex)
Rigid Body 의 함수인 Addforce를 쓰기위해서, FixedUpdate 함수를 이용해 구현한 간단한 캐릭터 이동 코드입니다.
( FixedUpdate 에서 d 를 빼고 FixeUpdate 함수로 사용해 봤는데, 안먹히네요. 지정된 함수명인가 봅니다.)
먼저, 이동하기 위해 Addforce Function 을 사용할 것이고, AddForce를 사용하기위해 예제는 다음과 같습니다.
using UnityEngine;
public class ExampleClass : MonoBehaviour { public float thrust; public Rigidbody rb;
void Start() { rb = GetComponent<Rigidbody>(); }
void FixedUpdate() { rb.AddForce(transform.forward * thrust); } }
(출처 URL : https://docs.unity3d.com/kr/530/ScriptReference/Rigidbody.AddForce.html)
예제에서는 실수형 변수를 thrust 로 선언, rb를 리지드 바디형(?) 으로 선언 한거 같습니다.
Start 함수 안에서, 비어있는 rb에 컴포넌트의 RigidBody의 속성을 넣어준후,
FixedUpdate 함수에서, Addforce 함수를 사용해서 rb에 실제로 먹히는 함수를 넣어주는거 같습니다.
rb.AddForce(transform.forward * thrust) ; // rb는 AddForce함수를 호출해 transfrom.forward 즉 앞으로 이동시키는데, 여기서 thrust는 이동속도 변수? 로 많이 쓰이는거 같습니다. 저도 이동속도 변수로 비슷하게 사용했습니다.
AddForce함수는 X,Y,Z 3축방향으로 이동시킬 수 있습니다.
이제 제가 적용한 방법에 대해 설명 하겠습니다.
저는 Vector3를 이용해, y축을 제외한 x,z를 이동시킬 것으로 다음과 같이 선언합니다.
이미 입력값으로 x 좌표(Horizontal) , z 좌표(Vertical) 입력을 받아오기때문에, 대입합니다.
다음 코드로 나가기 전에, 이동속도 변수를 선언한다고 했는데, 저는 이동속도 변수를 걷기 상태, 뛰기 상태일 때, 다른 속도를 주고 싶기 때문에, 두 개의 변수를 선언합니다.
public 으로 선언했을 시 ,
처럼 inspertor 창에서 스피드를 주는 것이 가능합니다.
걷기일 때, 10 , 뛰기일 때, 50 을 줍니다. (잘 실행되는지 확인하기 위해 비교를 어느정도 많이 나게 주는것을 추천드립니다,)
이미 vector3 에 inputH , 0.0f , inputV 를 주었기 때문에 위치변화에 대한 수는 충분히 입력되었습니다.
다음은 if문 을 통해 뛰기 모션 Trigger key 인 LeftShift 를 이용해, animamor 또한 뛰기 모션, 속도 또한 뛰기에 맞는 속도를 주기 위한 코드입니다.
복잡해 보이지만 코드 전문은 단순합니다.
이제 실행해 보겠습니다.
(음악소리가 들릴수 있습니다.)
의도한 대로 ,문제없이 잘 실행 됩니다.
이상 캐릭터 위치 이동 포스팅이었습니다.
'Example project' 카테고리의 다른 글
플레이어 체력 소모 (0) | 2019.01.25 |
---|---|
몬스터 접근 영역 (0) | 2019.01.25 |
캐릭터 이동 (0) | 2018.12.19 |
게임 스테이지 제작 (0) | 2018.03.14 |