간단한 게임만들기 #1(기본구성)
간단한 공을움직여서 아이템을 먹는 게임을 Uniti로 만들어보자
- Hierarchy에서 우클릭-> 3D object -> Plane, Sphere 두가지를 생성해주자
- 그리고 Plane은 Position을 0, 0, 0 Sphere는 0, 5, 0 으로 지정해주자
- Sphere는 Player 라고 이름을 변경 후에 Marterials를 하나 생성해서 녹색으로 변경해준다.

그럼 이상태가 될텐데
4. C# 스크립트를 하나 생성해서 이름을 Player라고 해준다. 이후 해당 스크립트의 내용을
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
private Rigidbody rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
// UI 등을 업데이트 할때 사용
void Update()
{
}
//물리 사용을 위해서 사용하는 지속 호출
void FixedUpdate()
{
//수평축의 입력을 받아주겠다.
float moveHorizontal = Input.GetAxis("Horizontal");
//수직축의 입력을 받아주겠다.
float moveVertical = Input.GetAxis("Vertical");
//플레이어를 이동시키겠다.
Vector3 movement = new Vector3(moveHorizontal, 0, moveVertical);
//플레이어한테 힘을 가해서 이동시키겠다.
rb.AddForce(movement * speed);
}
}
이렇게 작성해 준다.
5. 이후 실행하면 wasd 키에 따라 공이 움직이는것을 확인한다. 키보드가 떼어지더라도 가속도가 붙어 이동하는지도 체크한다.

6. 이번엔 저 공이 바깥으로 떨이지지 않게 할건데 3D object -> cube 를 생성한 이후 이름을 Wall로 지어주고Materials 에서 파란색을 하나 만들어 Wall 큐브에 넣어준다.
이후 Position 은 -5, 0, 0 / Scale은 1, 1, 10으로 만들어주면 아래와 같은 모양이된다.

7. 이후 Ctrl + D 로 파란색 벽을 복사해서 Plane의 4변에 모두 감싸준다.
8. Hierarchy에서 우클릭-> 3D object -> cube를 하나 더 만들어 준 후 이름을 Item이라고 지정해준다. 이후 아까처럼 노란색 Materials를 만들어 준 후 Item cube에 넣어서 노란색으로 만들어준다. 그리고 적절한 위치에 배치해 준다. 이때 높이를 맞추기 위해서 Y position은 1로 해준다.

9. Item의 Inspector 에서 Tag탭을 클릭하여 + 버튼을 누른뒤 Item이라고 추가해 준다. 그리고 뒤로가서 Itme의 Tag 를 Item 으로 지정해준다. 이유는 오브젝트들을 쉽게 관리하기 위해서와 물체가 충돌했을때 어떤 물체인지를 확인해 상호작용을 해주기 위함이다.


11. Inspector 하단의 IsTrigger을 체크해준다.

12. 이후 Player 라는 C# 스크립트에서 Update 함수를 없애주고 추가 함수를 만들어준다.
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
private Rigidbody rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
}
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Item")
{
other.gameObject.SetActive(false);
}
}
// Update is called once per frame
//물리 사용을 위해서 사용하는 지속 호출
void FixedUpdate()
{
//수평축의 입력을 받아주겠다.
float moveHorizontal = Input.GetAxis("Horizontal");
//수직축의 입력을 받아주겠다.
float moveVertical = Input.GetAxis("Vertical");
//플레이어를 이동시키겠다.
Vector3 movement = new Vector3(moveHorizontal, 0, moveVertical);
//플레이어한테 힘을 가해서 이동시키겠다.
rb.AddForce(movement * speed);
}
}
13. 이후에 실행해보면 방향키로 Player를 Item에 충돌시켰을때 Item 이 사라지는것을 확인할 수 있다.