유니티) Roll a Ball 튜토리얼 연습하기 #1
Roll a Ball
Materials 적용하기
Asset에서 빈Materials을 생성한다.
그리고, Texture파일을 빈Materials에 Albedo에 끌어다 놓는다.
Physic Material
Component -> 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증가한다.)