점프와 점프 실패
우리는 길을 가지고 있다, 우리는 이 게임을 좀더 업그레이드 할수있다. 우리는 유니티의 물리 엔진을 사용하여 점프를 구현할 것이다. 점프와 떨어지는 것을 구현할려면 콜라이더가 필요하다. Rigidbody 컴포넌트를 Runner 에 추가하자(Component / Physics / Rigidbody). 우리는 특정방향으로 회전하거나 이동하는것을 원하지 않으므로, constrain 값을 freezing Z position 과모든 rotation axes에 체크하자.
길위를 움직일때 어떠한 physic material 이 일어납니다. physic material 을 생성하고 모든 필드를 0으로 설정하고 combine options은 둘다 max로 설정합니다.
Runner PMat를 Runner folder 폴더에 넣고, Runner의 박스 콜라이더에 집어넣는다.
Runner 의 위치를 (0, 2, 0)로 설정하고 길 위로 떨어트린다. 그리고 플레이 버튼을 눌러서 어떤일이 일어나는지 봐라!


Runner는 오른쪽으로 이동하다 보면 구멍에 떨어지게 됩니다. 길을 빠르게 지나가도 다시 떨어지게 되있습니다. 하지만 길의 옆면에 충돌이 발생할 경우 이상한 일이 일어납니다.
Update함수에서 위치를 변경하기 때문입니다. 우리는 물리엔진을 그대로 두고 forces를 적용해야 됩니다.
Update 에서 Translate 을 부르는걸 제거합니다((Runner 스크립트). 대신에 우리는 유니티 collision 이벤트 메서드를 부릅니다(OnCollisionEnter ,OnCollisionExit ) – 길위에 부딪히거나 떨어질때 호출됩니다. 길위에 터치되면 우리는 가속도가 적용되어 속도가 빨라집니다.
acceleration를 5로 설정합시다.
using UnityEngine; public class Runner : MonoBehaviour { public static float distanceTraveled; public float acceleration; private bool touchingPlatform; void Update () { distanceTraveled = transform.localPosition.x; } void FixedUpdate () { if(touchingPlatform){ rigidbody.AddForce(acceleration, 0f, 0f, ForceMode.Acceleration); } } void OnCollisionEnter () { touchingPlatform = true; } void OnCollisionExit () { touchingPlatform = false; } }
이 작업을 하기 전에 한가지 더 할 일이 있습니다. Runner PMat을 복사하고, Platform Regular PMat이라고 지정해서 Platform 폴더에 집어넣습니다. friction 값은 0.05로 설정하고 physic material을 Platform prefab에 드래그합니다.
우리의 길은 약간의 마찰력을 제공하지만 Runner은 움직일수 있는 충분한 가속도가 있습니다.



Runner에 점프 관련 변수를 더합니다. 우리는 수평과 수직을 조작할수 있도록 float대신 Vector3 클래스를 사용할 예정입니다. 필드의 값을 (1, 7, 0)로 설정합니다.
Update 함수에 아래 내용을 추가하면 Runner이 점프버튼을 누를시 점프하게 될 것입니다.
public Vector3 jumpVelocity; void Update () { if(touchingPlatform && Input.GetButtonDown("Jump")){ rigidbody.AddForce(jumpVelocity, ForceMode.VelocityChange); } distanceTraveled = transform.localPosition.x; }

void Update () {
if(touchingPlatform && Input.GetButtonDown("Jump")){
rigidbody.AddForce(jumpVelocity, ForceMode.VelocityChange);
touchingPlatform = false;
}
distanceTraveled = transform.localPosition.x;
}
'유니티 > 스크립트' 카테고리의 다른 글
| [런게임] 유니티 3D로 러너 게임 만들기 - 게임 이벤트들 (0) | 2014.01.13 |
|---|---|
| [런게임] 유니티 3D로 러너 게임 만들기 - 길의 종류 (0) | 2014.01.13 |
| [런게임] 유니티 3D로 러너 게임 만들기 - 점프와 점프 실패 (0) | 2014.01.13 |
| [런게임] 유니티 3D로 러너 게임 만들기 - 플랫폼(길) 생성하기 (0) | 2014.01.13 |
| [런게임] 유니티 3D로 러너 게임 만들기 - Runner, Skyline 만들기 (0) | 2014.01.12 |
| [런게임] 유니티 3D로 러너 게임 만들기 - 씬 설정하기 (0) | 2014.01.12 |


