1. 자료형과 변수
자료형 변수 이름 = 값;
int, float, bool, string
string name = "이름";
2. 조건문
if (조건)
{
}
else if (조건)
{
}
else (조건)
{
}
3. 반복문
for (int i = 0; i <10; i++)
{
//할 일
}
4. 함수
반환자료형 함수이름 (매개변수)
{
}
int result = Plus(10,20)
int Plus (int a, int b)
{
return = a + b;
}
Vector3 dir = Vector3.right * h + Vector3.up * v ;
(위의 식과 같음) Vector3 dir = new Vector(h, v, 0);
오늘은
Enemy
EnemyManager
Enemy
1. 아래로 이동
void Update()
{
//아래로 이동하고싶다
//P += vt
transform.position += Vector3.down * speed * Time.deltaTime;
}
Collider가 있어야 충돌체가 있는 것 -> 충돌 가능
충돌하기 위해서는 충돌체와 리지드바디가 있어야 함 !
Player를 타겟하여 에너미가 쫓음
public class Enemy : MonoBehaviour
{
Vector3 dir;
public float speed = 5;
void Start()
{
//태어날 때 방향을 정하고 싶다
int randValue = Random.Range(0, 10);
// 30% 확률로는 플레이어 방향,
if (randValue < 3 )
{
GameObject target = GameObject.Find("Player");
dir = target.transform.position - transform.position;
dir.Normalize(); //벡터의 정규화 : 벡터의 크기를 1로 만든다
}
//나머지 확률로는 아래방향으로 하고 싶다.
else
{
dir = Vector3.down;
}
}
void Update()
{
//살아가면서 그 방향으로 이동하고 싶다
//아래로 이동하고싶다
//P += vt
transform.position += dir * speed * Time.deltaTime;
}
//함수호출 function call (callback 함수, 이벤트 함수)
private void OnCollisionEnter(Collision collision)
{
//너 죽고
Destroy(collision.gameObject);
//나 죽자
Destroy(this.gameObject);
}
}
EnemyManager
어떤 시간이 되면 Enemy 생성하기
1초마다 Enemy Factory에서 Enemy 생성
public class EnemyManager : MonoBehaviour
{
// 현재시간
float currentTime;
// 생성시간
public float createTime = 1;
// 적 공장
public GameObject enemyFactory;
void Start()
{
}
void Update()
{
// 의사 코드 = 슈도코드
//1. 시간이 흐르다가
currentTime += Time.deltaTime;
//2. 만약 현재시간이 생성시간을 초과하면
if (currentTime > createTime )
{
//3. 현재시간을 0으로 초기화하고
currentTime = 0;
//4. 적공장에서 적을 만들어서
GameObject enemy = Instantiate(enemyFactory);
//5. 내 위치에 배치하고 싶다
//enemy의 위치 = 내 위치
enemy.transform.position = enemyFactory.transform.position;
}
}
일정 범위 밖으로 나간 Enemy와 Bullet 파괴하기
파괴 존을 만든다
감지충돌 : Trigger
물리충돌 : Rigidbody
public class DestroyZone : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
//부딪힌 상대방을 파괴하고 싶다.
Destroy(other.gameObject);
}
DestroyZone끼리 닿으면 없어짐. 그렇게 되지 않도록 함
Layer 추가하여 edit - projectsetting - 부딪히지 않도록 언체크 !!!
** Shoot 슈팅 스크립트 프로토타입 외우기 ! -> 훨씬 좋아짐
'유니티' 카테고리의 다른 글
FBSGunTarget 1인칭 시점 object grab (0) | 2022.05.12 |
---|---|
프로퍼티(Property) get; set; (0) | 2022.05.12 |
Vector3 , Unity Lifecycle, 타겟 추적, 총구 발사 생성 (0) | 2022.05.09 |
C# 기본 (0) | 2022.05.06 |
Terrain 지형 만들기 (0) | 2022.05.04 |