유니티/간단한 게임

간단한 게임만들기 #3(캐릭터 플레이)

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

저번 게시글에 이어 게임을 완성시켜보도록 하겠다.

 

  1. 이번엔 아이템을 먹을때마다 소리를 넣을건데 에셋스토어에서 Shooting Sound(무료) 임포트 해준다.
  2. 아이템을 먹을때마다 소리가 나야 하기때문에 Player-Add Component-Audio Source 선택한다. 그리고 AudioClip 에서 원하는 오디오를 선택하면 되는데 나는magic_01 선택했다. AudioClip 하단에 Play On Awake 시작시 사운드를 재성하는것이고 Loop 반복재생이다. 배경음악을 넣고 싶을때 체크해 주면 된다. 현재는 배경음악을 지정하는게 아니니 체크를 해제 준다.
  3. Player C# Script 열어서 public AudioSource item_sound; 변수를 추가해주고 OnTriggerEnter 부분에 한줄 추가해준다.
private void OnTriggerEnter(Collider other)

    {

        if (other.tag == "Item")

        {

            other.gameObject.SetActive(false);

            item_sound.Play();

        }

    }
  1. 스크립트를 저장하면 Player 스크립트 부분에  Item_sound 부분이 생겼는데 여기다가 Hierachy Player 드래그해서 놓아준다

 

  1. 실행해서 아이템을 먹을때마다 지정한 사운드가 나는지 확인한다. '
  2. 이제 점프기능을 만들어 볼텐데 점프는 계속 하게되면 안되기 때문에 바닥에 닿아있을때만 점프가 가능하게 만들어준다. 다시 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;

        }

    }

 

  1. 이젠 점수를 추가해볼건데 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