하이 라키 뷰에 오른쪽 마우스를 누르고 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를 선택하여 태그 합니다
'게임 만들기 강좌 > 유니티 3D & 2D 1인칭 사격 총쏘기 게임 만들기' 카테고리의 다른 글
유니티 3D & 2D 1인칭 사격 총쏘기 만들기 4_ 최종_총 애니메이션 연결 및 프리팹연결 AudioClip연결 (0) | 2019.10.26 |
---|---|
유니티 3D & 2D 1인칭 사격 총쏘기 만들기 2 _ 총회전 (0) | 2019.10.24 |
유니티 3D & 2D 1인칭 사격 총쏘기 만들기 1 _ 배경 만들기 화면스크롤 만들기 (0) | 2019.10.22 |