반응형

하이 라키 뷰에 오른쪽 마우스를 누르고 3D object -> Cylinder를 만듭니다

 

그리고 스케일을 조정하여 1, 0.02, 1 을 값을 넣습니다 

 

그림과 같이 납작한 접시 모양이 됩니다 

 

하이라키 뷰에 Cylinder의 CrayCtrl 스크립트를 만들어 붙입니다 

ClayCtrl 스크립트작성

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

public class ClayCtrl : MonoBehaviour
{

    float speed; //접시 속도
    float rotZ; //접시 각도
    float gravity; // 추락속도

    int[] dir = { -1, 1 };
    int dirX; // 이동방향
    void Start()
    {
        SetPosition();
    }

    // Update is called once per frame
    void Update()
    {
        //접시의 이동속도를 감속한다
        gravity -= 1.3f * Time.deltaTime;
        //접시의 이동방향과 속도를 설정

        //접시를 회전을 주어 월드좌표로 이동
        Vector3 move = new Vector3(speed * dirX, gravity, 0) * Time.deltaTime;
        transform.Translate(move, Space.World);


        //화면에 접시가 벗어 나면 제거 한다
        if (Mathf.Abs(transform.position.x)>8 || transform.position.y < -3)
        {
           // GunCtrl.miss++;
            Destroy(gameObject);
        }
        
    }

    void SetPosition()
    {
     // 랜덤으로 접시속도 설정
        speed = Random.Range(3, 5f);

        //추락속도 설정
        gravity = 2f;

        //이동 방향 설정
        dirX = dir[Random.Range(0, 2)];

        //화면 의 좌우 위치
        float posX = -8 * dirX;

        //접시의 높이 및 회전설정
        float posY = Random.Range(2.5f, 4);
        transform.position = new Vector3(posX, posY, 9);
        transform.eulerAngles = new Vector3(-50, 0, Random.Range(10, 20f) * dirX);
    }
}

 

 

에셋에 Prefabs 폴더를 만들고 Clay 오브젝트를 드래그하여 프리 팹을 만들고 하이 라키 뷰에 있는 Clay는 삭제합니다 

 

 

참새가 죽을 때 나오는 꽥 오브젝트를 만들겠습니다.

Texture 폴더에 있는 꽥 그림파일을 하이 라키 뷰에 드래그하여 올려놓습니다 

 

OCtrl 스크립트를 만들고 꽥 오브젝트에 붙입니다 

 

OCtrl 스크립트 작성

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

public class OCtrl : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Destroy(gameObject, 1.5f);
    }


}

 

 

 

하이 라키뷰에 있는 꽥 오브젝트를 Prefabs 폴더에 드래그 하여 프리팹을 만듬니다 

하이라키뷰에 꽥 오브젝트는 삭제합니다 

 

 

 

하이라키 뷰에 Cube 오브젝트를 생성하여 스케일을 1, 0.02, 1을 맞춥니다 

 

Cube의 이름을 FireBullet으로 바꾸고 FireBullet 스크립트를 생성하여 붙입니다 

 

 

FireBullet 스크립트 작성

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

public class FireBulletCtrl : MonoBehaviour
{

    //속도
    float speed = 60f;

    // 총알 삭제 시간
    float delay = 0.5f;
    void Update()
    {
        // 총알 속도 설정
        float Move = speed * Time.deltaTime;

        //총알의 이동 방향 설정
        transform.Translate(Vector3.forward * Move);

        // 총알 삭제를 설정한다 
        delay -= Time.deltaTime;
        if (delay <= 0)
        {
            Destroy(gameObject);
        }
    }
}

 

 하이 라키 뷰에 FireBullet 오브젝트를 드래그 하여 Prefabs 폴더에 생성합니다 

그리고 하이 라키뷰에 있는 오브젝트는 삭제 합니다  

 

하이라키 뷰에  Quad를 생성하여 스케일을  0.8, 0.8 ,1로 맞춥니다 

 

 

 

Materials 폴더에 메터리얼을 생성하고 이름을 Bird 라하고 Shader -> Unlit/Transfarent를 하고 Sparrow그림파일을 선택하여 나타나게 합니다 

 

Materials파일에 있는 Bird 메터리얼을 Bird 오브젝트에 드래그하여 붙입니다 

 

Scripts폴더에  BirdCtrl 스크립트를 만들고 BirdCtrl 스크립트를 작성합니다 그리고 Bird 오브젝트에 붙임니다

 

 

BirdCtrl  스크립트 작성

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

public class BirdCtrl : MonoBehaviour
{
    //사망시 프리팹 연결 오브젝트
    public Transform oCtrl;


    //참새 이동 속도
    float speed;

    //죽었는지? 아닌지?
    bool isDead = false;

    void Start()
    {
        SetPosition();
        
    }


    void Update()
    {
        //속도 설정
        float Move = speed * Time.smoothDeltaTime;

        
        if (!isDead)
        {
            //날아갈때 오른쪽으로 이동
            transform.Translate(Vector3.right * Move, Space.World);
        }
        else
        {
            //떨어질대 아래로 이동
            transform.Translate(Vector3.down * Move, Space.World);
        }

        //화면을 벗어나면 제거
        if (transform.position.x > 7 || transform.position.y < -3)
        {
            Destroy(gameObject);
        }
    }

    //참새 사망시
    void DeadBird()
    {
        isDead = true;

        //참새사망시 180도 회전 설정
        transform.eulerAngles = new Vector3(0, 0, 180);

        //참새 위치 계산를 계산하여 꽥 오브젝트 생성할 위치을 설정하고 참새가 죽으면 생성한다
        Vector3 pos = new Vector3(transform.position.x, transform.position.y + 0.2f, 8);
        Quaternion rot = Quaternion.identity;

        rot.eulerAngles = new Vector3(0, 0, 0);
        Instantiate(oCtrl, pos, rot);
    }

    void SetPosition()
    {
        //참새의 속도 설정
        speed = Random.Range(2, 3f);

        //참새의  랜덤 위치설정
        transform.position = new Vector3(-7, Random.Range(1.4f, 4.7f), 8);
    }
}

 

 

Bird 오브젝트를 Prefabs폴더에 드래그하여 프리 팹을 만들고 Bird 프리팹을 선택하여 O Ctrl  자리에  꽥 프리팹을 연결합니다 

그리고 하이 라키 뷰에 있는  Bird오브젝트는 삭제합니다 

 

Biird 오브젝트를 선택하고 Tag에 Bird를 생성하여 태그 합니다 

 

Clay 프리 팹을 선택하여 Tag Clay를 선택하여 태그 합니다 

반응형

+ Recent posts