회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인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


2D 슈팅 게임

푸딩뱃살 | 2015.11.12 02:08 | 조회 5711
2D 슈팅 게임

Trigger, Collider 이해



CPlayerShip.cs
using UnityEngine;
using System.Collections;

public class CPlayerShip : MonoBehaviour {

    public float _speed;  // 이동 속도
    public Object _laserPrefab;  // 레이저 프리팹
    public Transform _ShotPos;  // 레이저 발사 위치

    void Update()
    {
        Move();  // 이동
        Shot();  // 레이저 발사
    }

    // 이동
    void Move()
    {
        // 방향키 입력
        float h = Input.GetAxis("Horizontal");
        float w = Input.GetAxis("Vertical");

        // 이동
        transform.Translate(Vector3.right * h * _speed * Time.deltaTime);

        // 위치 이동 제한
        Vector2 _pos = transform.position;  // x,y를 가진 Vector2형 pos 변수
        if (_pos.x <= -6f) _pos.x = -6f;  // 좌측 제한, -6보다 작으면 계속 x값에 -6
        if (_pos.x >= 6f) _pos.x = 6f;  // 우측 제한, 6보다 크면 계속 x값에 6
        transform.position = _pos;  // 게임오브젝트 position에 대입
    }

    // 발사
    void Shot()
    {
        // 스페이스바를 누르면
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // 게임오브젝트 생성 (레이저 생성/발사)
            // _ShotPos.position 또는 스프라이트의 피봇을 움직여 위치함
            Instantiate(_laserPrefab, _ShotPos.position, Quaternion.identity);
        }
    }
}

CMeteorGenerator.cs
using UnityEngine;
using System.Collections;

// 운석 생성기
public class CMeteorGenerator : MonoBehaviour {

    public Object _meteorPrefab;  // 운석 프리펩

    void Start () {
        // 0.8초마다 운석을 생성 / 타이밍
        InvokeRepeating("MeteorGenrate", 3, 0.8f);    
    }

    // 운석 생성
    void MeteorGenrate()
    {
        // 운석 생성 위치
        int pointNum = Random.Range(1, 14);
        // 위치 참조
        GameObject spawnPoint = GameObject.Find("SpawnPoint" + pointNum.ToString());
        // 운석 생성
        Instantiate(_meteorPrefab, spawnPoint.transform.position, Quaternion.identity);
    }
}

CMeteor.cs
using UnityEngine;
using System.Collections;

public class CMeteor : MonoBehaviour {

    public int _hp;  // 체력
    public float _speed;  // 이동 속도
    public Object _burstPrefab;  // 피격 프리팹

    void Start () {
        _hp = Random.Range(1, 4);  // 랜덤 체력
    }
    
    void Update () {
        // 이동
        transform.Translate(Vector2.down * _speed * Time.deltaTime);
    }

    // 운석이 무언가와 충돌함
    //  Meteor의 BoxCollider2D
    void OnTriggerEnter2D(Collider2D collider)
    {
        // 게임오브젝트 구분
        // 하이어라키의 이름명으로 구분(Instantiate으로 생성된 Clone 들), 태그로 구분

        if (collider.name == "Laser(Clone)")  // Clone까지 이름이 모두 포함되어야 함
        {
            // 운석 피격 이펙트 생성
            Instantiate(_burstPrefab, collider.transform.position, Quaternion.identity);

            // 레이저 파괴
            Destroy(collider.gameObject);

            _hp--;  // 운석 체력을 감소함

            // 운석 파괴
            if (_hp <= 0) Destroy(gameObject);
        }
    }
}

CLaser.cs
using UnityEngine;
using System.Collections;

public class CLaser : MonoBehaviour {

    public float _speed;  // 레이져 스피드

    void Update () {
        // 레이저 이동
        transform.Translate(Vector2.up * _speed * Time.deltaTime);
    }
}

CDestroyer.cs
using UnityEngine;
using System.Collections;

public class CDestroyer : MonoBehaviour {

    // 게임오브젝트 파괴자와 충돌하면 모든 오브젝트를 제거함 (2D)

    // Meteor의 Box Collider2D, Is Trigger on - 운석끼리 충돌로 이동 오류 해결?
    // 서로 충돌하지 않지만 충돌값은 받음
    void OnTriggerEnter2D(Collider2D Collider)
    {
        Destroy(Collider.gameObject);
    }

    /* Meteor의 Box Collider2D, Is Trigger off - 운석끼리 충돌로 이동 오류
    // 충돌, 충돌값 받음
    void OnCollisionEnter2D(Collision2D collision)
    {
        Destroy(collision.gameObject);
    }
    */
}

CBurst.cs
using UnityEngine;
using System.Collections;

public class CBurst : MonoBehaviour {

    void Start () {
        // 효과 제거(0.1f 타이머)
        Destroy(gameObject, 0.1f);
    }
}


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
>> [유니티] 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
74 [유니티] 오리 잡자 게임 첨부파일 푸딩뱃살 4340 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