유니티/간단한 게임

간단한 게임만들기 #1(기본구성)

오늘의논리 2023. 5. 27. 23:27
728x90

간단한 공을움직여서 아이템을 먹는 게임을 Uniti 만들어보자

 

  1. Hierarchy에서 우클릭-> 3D object -> Plane, Sphere 두가지를 생성해주자
  2. 그리고 Plane Position 0, 0, 0 Sphere 0, 5, 0 으로 지정해주자
  3. 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 사라지는것을 확인할 있다.

728x90