유니티 C# 3일차(onTriggerEnter, Tag, Destroy)
유니티 C# 3일차
(onTriggerEnter, Tag, Destroy)
ㆍ 오늘은 onTriggerEnter를 써보려고 합니다.
모든 게임에서 (캐릭터 - 캐릭터), (캐릭터-사물)
(사물-사물) 결국 오브젝트간 충돌은 없어서는 안되는
중요한 부분입니다.
onTriggerEnter는 충돌을 인식하는 방법중 한가지입니다
시작하기 전에
제목에는 onTiggerEnter라고만
적었지만
실제로 onTrigger의 종류는
onTriggerEnter, onTriggerExit, onTriggerStay
3가지 입니다
오늘은 간단하게 onTriggerEnter만
써보겠습니다.
오늘 최종 결과물입니다.
저용량으로 하느라
살짝 끊기는감이 있지만..
오늘 최종목표는 키보드로
공을 움직여서 Cube와 충돌하는
순간 Cube를 파괴하는 겁니다
(먹는 느낌?)
첫번째로
Object 배치
를 하겠습니다
이건 뭐 배치하기 나름인데..
중요한 부분이 아니므로
Plane, Sphere를 하나씩 만들고
Cube를 하나 만듭니다
이런식으로 대충 만들고
그 다음 Sphere,Cube에
색(Material)을 입혀보겠습니다.
Create - Material
생성해서 Blue, Black을
만들겠습니다.
그 다음
Cube에 Black
Sphere에 Blue를
드래그앤 드롭으로
추가시킵니다
다음은
충돌을 인식하기 위해서
Collider에서 Is Trigger를 체크하고
물리적제어를 허용하기 위해
Rigidbody를 추가시킵니다
음 Rigidbody는
Add Component 누르고
Rigidbody검색하시면 됩니다
리지드바디 추가 및 설명은
이쪽에 나와있습니다
자 이제
기본셋팅은
끝났으므로 이제
c# 스크립트를
작성해보겠습니다
사실 계속 지난글꺼와
연관시키느라
추가되는 부분은 거의없습니다
지난글에서 사용했던
키보드로 오브젝트 움직이는
스크립트에다가
이번에 사용할 코드를
추가시키겠습니다
using UnityEngine;
using System.Collections;
public class Day3: MonoBehaviour {
int speed = 5;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
moveObject ();
}
void moveObject()
{
float keyHorizontal = Input.GetAxis("Horizontal");
float keyVertical = Input.GetAxis("Vertical");
transform.Translate(Vector3.right * speed * Time.smoothDeltaTime * keyHorizontal , Space.World);
transform.Translate(Vector3.forward * speed * Time.smoothDeltaTime * keyVertical , Space.World);
}
void OnTriggerEnter(Collider other) {
if (other.transform.tag == "Cube") {
Destroy(other.gameObject);
}
}
}
자 보면
아래 빨간글씨만
추가되었습니다.
워낙 코드자체가
이해하기 쉬운형태라서
위에서 Collider에서
Is Trigger체크함으로써
OnTriggerEnter가
작동을 하게 됩니다
파라미터에 Collider other이
있습니다.
Sphere와 부딪히는 물체가
other입니다.
if(other.transform.tag == "Cube")
부딪히는 물체의 태그가 Cube이면
조건문을 실행하겠다는 내용입니다
(태그는 잠시후에 붙여보겠습니다)
Destory(other.gameObject);
이 부분이 부딪히는
물체가 파괴?(먹히는듯한)
부분입니다.
코드 그대로 받아들이시면 됩니다
other이 파괴된다.
여기까지 작성을 완료했으면
c#스크립트를
드래그앤드롭으로
Sphere에 붙여넣습니다
자 다음은
부딪힘을 당하는? Cube에
Tag를 추가시키겠습니다.
Cube를 선택하고
오른쪽 Inspector에서
상단부분에
Tag - Untagged - Add tag..
를 선택해줍니다
Tags&Layers
창이 뜨면
Tag를 추가해서
"Cube"라고 적어줍니다
자 만들었으면
다시 Cube로 돌아와서
추가된 Cube를 태그로 달아줍니다
자 여기까지 완료했으면
이제 게임을 실행시키고
Cube와 충돌하면 사라지는것을
확인 할 수 있습니다.
처음 결과물처럼 하는건 그냥
Cube를 누르고
Ctrl+D 누르면 복제가 되는데
원하는 만큼, 원하는 위치에
생성해서 배치시키면 끝납니다
오늘의 유니티 C# 공부
onTriggerEnter는 여기까지
하겠습니다
'Unity3D > C#' 카테고리의 다른 글
유니티 C# 4일차 마우스 기본(OnMouseEnter, OnMouseUp ~) (1) | 2016.05.17 |
---|---|
유니티 C# 2일차(카메라 움직이기) (0) | 2016.05.05 |
유니티 C# 1일차(Object 키보드로 이동) (1) | 2016.05.01 |
유니티3D 언어선택.. 결국 C# (0) | 2016.04.23 |