Roll a Ball



Materials 적용하기

Asset에서 빈Materials을 생성한다.

그리고, Texture파일을 빈Materials에 Albedo에 끌어다 놓는다. 


Physic Material

Materials 에 반동을 주거나 마찰력을 주기 위한 Materials 

Component -> Physic Material 생성한다.



Physic Material 인스펙터창을 살펴보자

Dynamic Friction : 이미 이동중일 때 마찰

Static Friction : 정지시 마찰

Bounciness : 반동방식


나는 벽에다 Physic Material를 추가 하고 Bounciness값을 0.5주었다.



그랬더니 ~

볼을 벽에 부딪히면 전과 다르게 튕겨 나온다.

(캐릭터 움직임에는 translate으로 위치값을 변경해주는 방법과

rigdbody를 통해 물리적힘을 줘서 물체를 움직이는 방법이있는데

이 게임은 rb.AddForce (movement * speed); 로 물체에 힘을 줘서 움직이게 하고있다.)





코드분석






코드분석 : PlayerControllers

public으로 변수를 할당하면 유니티 인스펙터창에서 보인다. 변경가능 (값 적용 우선순위 : 인스펙터 > 소스코드창)

speed : 스피드 값

Text CountText; 현재 점수를 불러올 UI 텍스트

Win Text : 승리시 띄울 UI텍스트


void Start ()

{

rb = GetComponent<Rigidbody>();


count = 0;

SetCountText ();

winText.text = "";

}

주요코드

rb = GetComponent<Rigidbody>();

컴포넌트 Rigidbody를 가져와 변수 rb로 정한다.


void FixedUpdate ()

{

float moveHorizontal = Input.GetAxis ("Horizontal");

float moveVertical = Input.GetAxis ("Vertical");


Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);


rb.AddForce (movement * speed);

}

주요코드

rb.AddForce (movement * speed);

Rigidbody를 물리적 힘을 가해 플레이어를 이동시킨다.



void OnTriggerEnter(Collider other)

{

if (other.gameObject.CompareTag ("Pick Up"))

{

other.gameObject.SetActive (false);


count = count + 1;


SetCountText ();

}

}

주요 키워드

CompareTag : 해당하는 태그를 찾는다.

SetActive : 컴포넌트에 토글? 켜고,끄기

OnTriggerEnter: Collider가 다른 트리거 이벤트에 침입했을 때 호출

(지금 위 코드에서는 pick up 태그가 붙은 오브젝트(노란상자)에 Collider가 닿으면 count를 1증가한다.)




반응형

+ Recent posts