Giter VIP home page Giter VIP logo

gungame's Introduction

간단한 슈팅게임


1. Player object

  1. 방향키를 누르고있으면 상하좌우로 이동

  2. 이동중에는 해당 방향을 바라봄

  3. Time.Deltatime을 이용해 초당 이동속도를 가시적으로 컨트롤

    Script 작성과 monobehaviour 컴포넌트 활용

    Transform과 Vector3, quaternion를 이용한 이동과 회전

    Input 클래스를 통한 입력 관리

2. Player Camera : 다음과 같은 구조로 플레이어를 추적해 비춰주는 카메라

  1. 플레이어와 같은 위치에 배치되는 CameraRoot

  2. CameraRoot의 자식으로 중점에서 일정 거리만큼 멀어진 후 중점을 바라보는 PlayerCamera

  3. PlayerCamera에는 Camera 컴포넌트가 적용

    Transform의 부모와 자식간 위치관계의 이해

    다른 오브젝트를 참고하는 Script 작성

3. 슈팅 조작

  1. 마우스를 클릭하면, 플레이어 위치에서 총알을 생성한 후, 클릭한 위치를 향해 총알을 발사

  2. 맵의 바닥에 해당하는 오브젝트를 배치

  3. 마우스 클릭이 발생하면, 마우스가 가르키고있는 바닥 오브젝트 위치를 검출

  4. 플레이어 위치에 총알 오브젝트를 생성

  5. 총알 오브젝트의 스크립트에 접근해 검출한 방향을 향해 이동하도록 지시

    Physic의 RayCast와 RaycastHit에 대한 이해

    마우스 Input에 대한 이해

    instantiate를 통한 오브젝트 생성과 관리

    Vector3의 활용

4. 적 오브젝트

  1. 일정 시간마다 정해진 범위 안 무작위 위치에 적 오브젝트를 생성

  2. 플레이어와 총알, 적 사이의 충돌처리

  3. 적 오브젝트는 플레이어 오브젝트를 향해 이동

  4. 적과 플레이어 오브젝트가 충돌하면, 플레이어 오브젝트를 제거

  5. 적과 총알 오브젝트가 충돌하면, 총알과 적 오브젝트를 제거

  6. 총알이 벽과 충돌하면, 총알 오브젝트를 제거

 Time 클래스를 이용한 타이머 관리

 Collison과 Rigidbody를 통한 유니티 충돌의 이해
 
 Collision 충돌과 Trigger 충돌의 차이에 대한 이해
 
 충돌체 구분을 위한 Tag와 Layer의 활용
 
  Random 클래스 활용

5. UI 표시

  1. 화면 좌측 상단에 작업 일자를 표시하는 Text

  2. 플레이어 오브젝트가 제거되면, 화면 중앙에 '다시하기' 버튼과 '종료하기' 버튼 표시

  3. 다시하기를 누르면 현재 Scene을 로드

  4. 종료하기를 누르면 게임을 종료

  5. 해상도 크기 및 비율이 바뀌더라도 의도한 위치에 적절한 크기로 표시되도록 유지

    UI Canvas와 Event에 대한 이해와 활용

    Scene과 Application 클래스의 활용


응용

  1. 공격력과 체력 개념 적용
  2. 점수 개념 적용 : 적 오브젝트를 제거하면 점수가 증가하고 UI에 표시
  3. 조작방식 변경 : 누르기 지속으로 총알 발사, Shift키로 대쉬 등
  4. 다양한 방식의 총알 생성 : 기관총, 산탄총, 관통총 등
  5. 범위 공격과 그에 맞는 공격방식 구현 : 곡사포, 지뢰 등
  6. 다양한 능력치를 가진 적 생성 : 체력, 속도, 크기, 등장빈도 등
  7. 플레이어의 능력치를 변화시키는 버프 아이템 : 플레이어와 충돌하면 속도, 공격력, 체력 등을 올려주는 오브젝트를 일정 시간마다 생성
  8. 데이터 관리 : 최고점수를 저장하고 다음 실행때도 표시
  9. 골드와 업그레이드 : 적을 제거하면 골드를 획득하고 플레이어의 능력치를 강화 후 해당 정보를 저장

gungame's People

Contributors

kimmming avatar kmiinjii avatar

Watchers

 avatar

gungame's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.