Unity/엔진프로그래밍

0705_좀비슈터 (시험)

minquu 2021. 7. 5. 11:54
반응형

다 만들고, 녹스로 빌드해서 영상 찍어서 제출하기

 

https://github.com/IJEMIN/Unity-Programming-Essence

 

IJEMIN/Unity-Programming-Essence

레트로의 유니티 게임 프로그래밍 에센스. Contribute to IJEMIN/Unity-Programming-Essence development by creating an account on GitHub.

github.com

 

에셋 받기

 

https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631

 

Joystick Pack | 입출력 관리 | Unity Asset Store

Get the Joystick Pack package from Fenerax Studios and speed up your game development process. Find this & other 입출력 관리 options on the Unity Asset Store.

assetstore.unity.com

조이스틱 다운 받기

 

 

 

새 프로젝트 만들어주기

 

---

해야할 것

인풋

레이캐스트

애니메이션컨트롤

네비메쉬

해야할 것

 

추가 점수 // 시네머신, UI hp

 

1. 플레이어가 바라보는 바얗ㅇ으로 일정 시간마다 총알을 쏜다.

2. 조이스틱으로 캐릭터를 컨트롤 할 수 있다.

 

3. 네비메시를 사용해서 지형을 설치한다.

4. 스폰 위치에 좀비가 스폰 될 수 있게 되어야한다.

5. 좀비는 플레이어를 쫒아간다.

6. 플레이어의 총알을 받으면 좀비는 죽는다.

7. 플레이어는 좀비에 닿으면 체력이 감소된다.

8. 플레이어의 체력이 0이되면 게임이 종료된다.

9. 게임이 종료되면 처음부터 다시 시작해야한다.

10. 안드로이드 플랫폼 빌드 후 실행결과를 확인 할수 있어야한다.

 

 

-----> 60점

 

+추가점수

1.시네머신 카메라를 사용해서 플레이어를 따라가게 만든다.

2.플레이어의 체력을 UI 상의 표시한다. 단. UI는 플레이어의 바닥에 붙어서 플레이어가 움직일때 따라 움직여야한다.

 

----->40점

 

------

 

리소스 압축풀기

 

17 - done -zombie 폴더 유니티로 열기

 

씬에서 메인씬 열기 - 1920-1080으로 사용하기

 

여기서 리소스를 뜯어내서 사용할 것이다.

(캐릭터, 좀비, 지형, 총, HP)

 

컨트롤 + n 해서 새로운 씬 만들어서 프리팹 가져오기

 

좀비, gun, (모델-우먼 - 애니메이션 빠져있음, 애니메이션 -> 슈터애니메이션 붙이기), 

 

https://cafe.naver.com/gameprogramming7?iframe_url=/MyCafeIntro.nhn%3Fclubid=30392472 

 

종로 더조은 게임 개발자 과정 3기 : 네이버 카페

종로 더조은 컴퓨터 게임 개발자 양성과정 3기 입니다.

cafe.naver.com

 

res 파일 (패키지 파일) 다운

 

그걸 가져와서 우리 프로젝트 넣을 것이다.

 

먼저 조이스틱부터 붙일 것이다.

 

이 순서대로 시험 볼댸 하면 된다.

 

 

플랫폼 변경 잊지말고 ! 

 

 

해상도를 맞춘다.

 

 

리소스를 임포트해준다.

 

프리팹에 있는 것 삭제해주고

마이프리팹스를 옮겨준다.

 

우먼 가져다놔서 실행해보기 

 

 

 

 

이제 여기에 조이스틱을 달것이다.

 

 

 

조이스틱 추가하기

 

유니티에 추가해주기

 

 

 

조이스틱 데모씬 열어서 테스트해보기 

 

 

플레이하면 잘 움직임, 이제 이걸 캐릭터로 바꿔줄것이다.

 

 

캔버스 만들고 안에 Variable Joystic 붙이기

 

개임메인 빈 오브젝트 만들어서

게임 메인 스크립터 넣어주기

 

 

Log 값 찍기

 

 

 

잘 찍힘. 이제 이걸로 값을 이용해서 쓰면된다.

 

질 찍힌걸 확인햇으면 케릭터 넣기

 

 

Transform.eulerAngles = new Vector3( 0, Mathf.Atan2( Input.GetAxis("Vertical"), Input.GetAxis("Horizontal")) * 180 / Mathf.PI, 0 );

 

이 코드 사용해서 테스트

 

 

 

회전 테스트 완료

 

 

방향이 잘 바뀌었으니깐 그냥 그 방향으로 앞으로 간다.

 

 

앞으로 움직이기 성공

 

        if (joystick.Horizontal != 0 && joystick.Vertical != 0) {
            this.playerGo.transform.Translate(Vector3.forward * 1.0f * Time.deltaTime);
        }

 

 

그다음 애니메이션 하기

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameMain : MonoBehaviour
{
    public VariableJoystick joystic;
    public GameObject playerGo;
    private Animator anim;

    private void Start()
    {
        this.anim = this.playerGo.GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        var eulerAngles = new Vector3(0, Mathf.Atan2(joystic.Horizontal, joystic.Vertical) * 180 / Mathf.PI, 0);
        playerGo.transform.eulerAngles = eulerAngles;

        if (joystic.Horizontal != 0 && joystic.Vertical != 0)
        {
            this.playerGo.transform.Translate(Vector3.forward * 1.0f * Time.deltaTime);
            this.anim.SetFloat("Move", 1.0f);
        }
        else
        {
            this.anim.SetFloat("Move", 0f);
        }
    }
}

 

 

---

일정 시간 총알을 쏘게한다.

 

Gun에 만든다.

 

Gun 스크립터를 만든다.

 

 

건에다가 건 스크립터를 붙여준다.

 

 

건의 발사 테스트를한다.

 

 

----

 

지형을 가져다 놓은다

 

지형 가져다 놓은거 언팩한다.

 

캐릭터가 지형을 뚫고 내려가지 않게

 

rigibody와 캡슐 콜라이더를 붙여준다.

 

 

리지드 바디 로테이션 막고

캡슐 크기 조절

 

 

 

베이크 누르면 구워진다.

 

 

-----

 

스폰 포인트 만들어서 좀비 생성하기

 

 

 

 

빈 오브젝트 만들어서 안에 포인트 1 2 만들어서 좌상단, 우상단에 만들어주기

 

좀비 스패너

빈 오브젝트에 붙여주기

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ZombieSpawner : MonoBehaviour
{
    public int maxCount = 2;
    public List<GameObject> zombies;
    public GameObject zombiePrefab;
    public Transform[] arrSpawnPos;

    // Start is called before the first frame update
    void Start()
    {
        this.zombies = new List<GameObject>();

        this.CreateZombies();
    }

    private void CreateZombies()
    {
        if (zombies.Count == 0)
        {
            return;
        }
        else
        {
            int total = this.maxCount - this.zombies.Count;
            for (int i = 0; i < total; i++)
            {
                var zombieGo = Instantiate<GameObject>(this.zombiePrefab);
                var zombie = zombieGo.GetComponent<Zombie>();
                zombie.Init(this.arrSpawnPos[i].position, i);
            }
        }
    }
}

 

최대 2마리까지 생성되게

 

Zmobie 스크립터 만들기

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class Zombie : MonoBehaviour
{
    public Action onDie;
    public int Id { get; private set; }

    public void Init(Vector3 initPos, int id)
    {
        this.transform.position = initPos;
        this.Id = id;
    }

    public void Hit()
    {
        Debug.Log("Hit");
        this.Die();
    }

    public void Die()
    {
        Debug.Log("Die");
        this.onDie();
    }
}

 

 

 

이 이상은 카페 확인.. 컴터재부팅때문에 놓침..

 

 

그래서 다 만들고나서 녹스로 빌드 해보기 

 

 

반응형