# Enemy
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 태어날 때 30% 확률로 플레이어 방향, 나머지 확률로 아래방향으로 정하고
// 살아가면서 그 방향으로 계속 이동하고 싶다.
public class Enemy : MonoBehaviour
{
// 방향
Vector3 dir;
//속력
public float speed = 5;
// Start is called before the first frame update
void Start()
{
// 태어날 때
// 1. 30% 확률로 플레이어 방향, 나머지 확률로 아래방향으로 정하고
int result = UnityEngine.Random.Range(0, 10); //float형으로하면 0과 10도 포함(0~10), int형으로 쓰면 10은 미포함(0~9)
if (result < 3)
{
//플레이어 방향
GameObject target = GameObject.Find("Player");
// dir = target - me
dir = target.transform.position - transform.position;
dir.Normalize();
}
else
{
//아래방향
dir = Vector3.down;
}
}
// Update is called once per frame
void Update()
{
// 살아가면서 그 방향으로 계속 이동하고 싶다.
transform.position += dir * speed * Time.deltaTime;
}
}
# PlayerFire
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 사용자가 마우스 왼쪽버튼을 누르면
// 총알을 발사하고 싶다. (Bullet factory(총알 공장)에서 총알을 만들어서 총구위치에 가져다 놓고 싶다.)
public class PlayerFire : MonoBehaviour
{
// 총알공장
public GameObject bulletFactory;//prefab은 게임오브젝트를 파일로 만든 것이기 때문에 다시 게임오브젝트로 만들어줘야함
// 총구위치
public GameObject firePosition;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
// 1. 만약 사용자가 마우스 왼쪽버튼을 누르면
if (Input.GetButtonDown("Fire1"))
{
//왼쪽버튼을 누르는 순간 Fire1은 왼쪽버튼, Fire2는 오른쪽버튼, 휠버튼은 Fire3
// 2. 총알공장에서 총알을 만들어서
GameObject bullet = Instantiate(bulletFactory); //Instantiate하면 GameObject가 하나 만들어져서 씬 어딘가에 위치하게 됨
bullet.transform.position = firePosition.transform.position; //유니티에서 게임오브젝트 눌러보면 transform에 position이 나옴 -> transform.position
//유니티 게임오브젝트 우클릭해서 create Empty누르면 자식이 하나 생성되는데 이것은 실체는 없고 그냥 위치만 가지고 있음
// 3. 총구 위치에 가져다 놓고 싶다.
}
}
}
'etc. > 🕹️unity' 카테고리의 다른 글
3D FPS (0) | 2022.06.11 |
---|---|
unity shader, effect, light & 지형 만들기 (0) | 2022.06.11 |
사용자 입력 제어 및 오브젝트 이동 처리 (0) | 2022.06.11 |
unity 물리엔진과 충돌 시스템 (0) | 2022.06.11 |
작년 공부 기록용 (0) | 2022.06.11 |
댓글