회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


오리 잡자 게임

푸딩뱃살 | 2015.11.07 02:00 | 조회 4340
오리 잡자 게임 (OOP 이해)

 Unity v5.3.1


왼쪽에서 오른쪽으로 랜덤으로 오는 오리를 과녁에 올때 쏘면 점수가 올라가는 게임
*클래스 이해 및 2D 캐릭터 움직임, 충돌체



CDuck.cs
using UnityEngine;
using System.Collections;

// 오리 클래스
public class CDuck : MonoBehaviour {

    // 오리 이동 속도
    public float _speed;

    // 오리 이동 방향
    public Vector2 _dir;

    // 오리 생성기 참조
    public CDuckGenerator _duckGenerator;

    bool _isDie = false;

    void Start () {

        //  오리 생성기를 참조함
        _duckGenerator = GameObject.Find("DuckGenerator").
                            GetComponent<cduckgenerator>();
    }
    
    void Update () {
        Move(); // 이동하라
    }

    // 이동 메소드
    void Move()
    {
        if (_isDie == true) return;

        // 방향 * 속도 * 프레임당보간시간
        transform.Translate(_dir * _speed * Time.deltaTime);

        // 오리가 오른쪽으로 좌표 8축을 넘으면 사망 시킴
        if (transform.position.x >= 8)
        {
            Die();
        }
    }

    // 타격 메소드
    public void Hit()
    {
        Die();
    }

    // 사망 메소드
    void Die()
    {
        _isDie = true;

        // 오리 생성기에게 오리를 생성하라고 요청함
        _duckGenerator.GenerateDuck();

        // 오리는 파괴짐
        Destroy(gameObject);
    }
}

CDuckGenerator.cs
using UnityEngine;
using System.Collections;

// 오리 생성기
public class CDuckGenerator : MonoBehaviour {

    // 오리 게임 오브젝트의 정보를 가진 파일 참조(포인터)
    public Object[] _duckPrefabs;

    // Use this for initialization
    void Start () {
        GenerateDuck();
    }
    
    // 오리 생성을 요청함
    public void GenerateDuck()
    {
        // 랜덤 범위를 뽑아서
        int randNum = Random.Range(0, 10);

        // 70% 확률로 1번 타입 오류를
        if (randNum < 7)
        {
            Instantiate(_duckPrefabs[0], new Vector3(-8, 0, 0), Quaternion.identity);
        }
        else // 30% 확률로 2번 타입 오류를
        {
            Instantiate(_duckPrefabs[1], new Vector3(-8, 0, 0), Quaternion.identity);
        }

        // 생성 하라
    }
}

CGameManager.cs
using UnityEngine;
using System.Collections;

// 유니티 UI 사용
using UnityEngine.UI;

public class CGameManager : MonoBehaviour {
    void Start()
    {
        Invoke("GameEnd", 20f);
    }
    // 스코어 점수 출력 텍스트
    public Text _scoreText;

    // 스코어 올리기
    public void ScoreUp(int addScore)
    {
        // 문자열로된 스코어 점수를 숫자로 변경함 
        int score = int.Parse(_scoreText.text);

        // 스코어를 10점 올림
        score += addScore;

        // 숫자로 계산한 점수를 문자열 형태로 표시함
        _scoreText.text = score.ToString();
    }

    void GameEnd()
    {
        Application.LoadLevel("End");
    }
}

CGun.cs
using UnityEngine;
using System.Collections;

// 총 클래스
public class CGun : MonoBehaviour {

    // 타겟 포인트의 참조 변수
    public CTargetPoint _tagePoint;

    void Update () {
        DoShot();
    }

    void DoShot()
    {
        // 스페이스바를 누르면
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // 타겟 -> 샷()!!
            _tagePoint.Shot();
        }
    }
}

CTargetPoint.cs
using UnityEngine;
using System.Collections;

// 발포 위치 포인트 클래스
public class CTargetPoint : MonoBehaviour {

    // 게임 매니저를 참조함
    public CGameManager _gameManager;

    // 타겟 발사
    public void Shot()
    {
        // Z+ 방향으로 0.2f 넓이의 충돌 레이저를 발사!!!
        Collider2D duckCollider = Physics2D.OverlapCircle(transform.position, 0.2f);

        // 충돌체가 존재한다면
        if (duckCollider != null)
        {
            // 오리 타격 메소드 호출
            CDuck duck = duckCollider.GetComponent<cduck>();
            duck.Hit();
         
            if (duckCollider.tag == "Duck1")
            {
                // 타격이 성공했으므로 점수를 촐림
                _gameManager.ScoreUp(10);
            }
            else if (duckCollider.tag == "Duck2")
            {
                // 타격이 성공했으므로 점수를 촐림
                _gameManager.ScoreUp(50);
            }
        }
    }
}

146개(4/8페이지)
유니티
번호 제목 글쓴이 조회 날짜
공지 유니티 강좌 모음(영문) 푸딩뱃살 60278 2013.08.28 12:02
공지 유니티 경고, 에러 모음 (재정리 예정) 첨부파일 [1+1] 푸딩뱃살 71063 2013.08.12 00:09
84 [유니티] 게임에 로그인 붙이기 첨부파일 [2+1] 푸딩뱃살 5595 2015.12.02 20:55
83 [스트립트] Json Parser (파싱) 첨부파일 푸딩뱃살 1414 2015.11.25 11:24
82 [유니티] 플랫포머(Platformer) 게임 첨부파일 [1+1] 푸딩뱃살 4587 2015.11.22 11:56
81 [유니티] 2D 슈팅 게임3 첨부파일 푸딩뱃살 4786 2015.11.20 10:31
80 [유니티] Fly Plane 게임 첨부파일 푸딩뱃살 5301 2015.11.17 23:01
79 [유니티] 2D 슈팅 게임2 첨부파일 푸딩뱃살 4159 2015.11.13 01:01
78 [유니티] 2D 슈팅 게임 첨부파일 푸딩뱃살 5712 2015.11.12 02:08
77 [유니티] 2D 캐릭터 이동 컨트롤 (애니메이션) 첨부파일 [6+4] 푸딩뱃살 13217 2015.11.10 22:01
76 [유니티] 탱크 게임2 첨부파일 푸딩뱃살 4412 2015.11.10 21:54
75 [유니티] 탱크 게임 첨부파일 푸딩뱃살 4004 2015.11.09 23:36
>> [유니티] 오리 잡자 게임 첨부파일 푸딩뱃살 4341 2015.11.07 02:00
73 [유니티] 2D 캐릭터 키 애니메이션 첨부파일 푸딩뱃살 3982 2015.11.06 00:54
72 [유니티] 가위바위보 게임 첨부파일 [2+2] 푸딩뱃살 5756 2015.11.04 23:49
71 [참고] Xbox360 컨트롤러 레이아웃 첨부파일 푸딩뱃살 4625 2015.10.21 18:52
70 [유니티] 애셋 스토어에서 다운로드 받은 경로 (v5.x) 첨부파일 푸딩뱃살 4280 2015.08.03 17:08
69 [유니티] 크롬에서 유니티 웹플레이어 실행이 안될 때 첨부파일 푸딩뱃살 8573 2015.06.12 17:18
68 [정보] Unity 5.x 부터는 푸딩뱃살 4700 2015.03.16 21:46
67 [참고] Unity 3.x Game Development Essentials 비밀글 푸딩뱃살 8 2015.02.25 16:57
66 [스트립트] Camera.ScreenPointToRay 첨부파일 푸딩뱃살 4310 2015.01.11 21:08
65 [유니티] Camera (카메라) 첨부파일 푸딩뱃살 1901 2015.01.10 15:17