유니티/간단한 게임
간단한 게임만들기 #3(캐릭터 플레이)
오늘의논리
2023. 5. 27. 23:33
728x90
저번 게시글에 이어 게임을 완성시켜보도록 하겠다.
- 이번엔 아이템을 먹을때마다 소리를 넣을건데 에셋스토어에서 Shooting Sound(무료)를 임포트 해준다.
- 아이템을 먹을때마다 소리가 나야 하기때문에 Player-Add Component-Audio Source를 선택한다. 그리고 AudioClip 에서 원하는 오디오를 선택하면 되는데 나는magic_01을 선택했다. AudioClip 하단에 Play On Awake는 시작시 사운드를 재성하는것이고 Loop는 반복재생이다. 배경음악을 넣고 싶을때 체크해 주면 된다. 현재는 배경음악을 지정하는게 아니니 체크를 해제 해 준다.
- Player C# Script를 열어서 public AudioSource item_sound; 변수를 추가해주고 OnTriggerEnter 부분에 한줄 추가해준다.
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Item")
{
other.gameObject.SetActive(false);
item_sound.Play();
}
}
- 스크립트를 저장하면 Player의 스크립트 부분에 Item_sound 부분이 생겼는데 여기다가 Hierachy의 Player를 드래그해서 놓아준다

- 실행해서 아이템을 먹을때마다 지정한 사운드가 나는지 확인한다. '
- 이제 점프기능을 만들어 볼텐데 점프는 계속 하게되면 안되기 때문에 바닥에 닿아있을때만 점프가 가능하게 만들어준다. 다시 Player 스크립트를 열어 준뒤 아래내용을 추가한다.
변수추가
public bool isJump;
충돌함수 추가
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Floor")
{
isJump = true;
}
Debug.Log(collision.gameObject.name);
}
점프 키 및 기능추가
void FixedUpdate()
{
//수평축의 입력을 받아주겠다.
float moveHorizontal = Input.GetAxis("Horizontal");
//수직축의 입력을 받아주겠다.
float moveVertical = Input.GetAxis("Vertical");
//플레이어를 이동시키겠다.
Vector3 movement = new Vector3(moveHorizontal, 0, moveVertical);
//플레이어한테 힘을 가해서 이동시키겠다.
rb.AddForce(movement * speed);
//스페이스바가 눌리고 점프가 가능하면 점프한다.
if (Input.GetKey(KeyCode.Space) && isJump)
{
rb.AddForce(Vector3.up * 5, ForceMode.Impulse);
isJump = false;
}
}
- 이젠 점수를 추가해볼건데 Player 스크립트에서 public int Score; 라는 변수를 추가해주고 OnTriggerEnter함수에서 Item 을 먹었을때 Score = Score+10; 을 선언해준다. 그리고 점프해서 먹을 아이템인 Silver Coin을 저번 에셋스토어에서 다운한 QuarterView 3D Action BE5 에서 Hierachy에 드래그엔 드롭 해주고 Gold Coin처럼 우클릭 - Prefabs - 우클릭- Prefab - Unpack Completely 를 선택한다. 이후에 Add Component 클릭후 BoxCollider 룰 추가한뒤 적절크기로 설정해주고 IsTrigger 체크박스를 체크해준다.
말은 어렵게 했지만 Gold Coin 처럼 하나 더 만들어서 공중에 배치하면된다. 그리고 해당 Silver Coin들의 태그를 JumpItem이라고 생성해서 지정해 준뒤 Player 스크립트를 열어서
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Item")
{
other.gameObject.SetActive(false);
item_sound.Play();
Score = Score + 10;
left_item--;
}
if (other.tag == "JumpItem")
{
other.gameObject.SetActive(false);
item_sound.Play();
Score = Score + 20;
left_item--;
}
if (Score >= 100)
{
Debug.Log("GameEnd!!");
}
Debug.Log("My score is: "+Score);
Debug.Log("Left item is: "+ left_item);
}
이렇게 점프아이템을 먹을땐 20점 추가 기능 및 점수,남은 아이템갯수 표시 기능을 만들어준다. 그리고 100점이 넘었을때는 게임이 끝났음을 표시한다. left_item 은 맨위에 선언 후 Start 함수에서 코인갯수로 초기화 해주면 된다.
728x90