728x90
▼ 구현할 부분
▼ 구현 목표
- 날아다니는 적(Enemy 3)의 이동 및 공격 구현하기
- 하늘에 떠다니는듯 위아래로 움직이면서 Player 따라가기 (like 두둥실,,) <--- 완료
- Player를 향해 총알 발사하기 <--- 완료
- 좌우로 랜덤하게 이동하기 <--- 다른 팀원이 만들어 놓은 적 이동 스크립트 활용하기로 함
▼ 기본 시야
기존에 있던 'MainCamera' 삭제 후 'OVRCameraRig' 붙여주기
▼ 날아다니는 적 만들어주기 (Enemy 3)
비행체 프리팹과 비행체에 탈 Enemy 프리팹을 가져와서
합체 시켜주기
기존에 있던 Idle 애니메이션이 좀 밋밋한 것 같아서
Idle 애니메이션을 복사해와 새로운 Enemy3 애니메이션을 만들어 준 후 Position 값을 조정해서
좀 더 역동적으로 연출해보았다
▼ Player 추적하고 총알 발사하기
총알을 발사할 위치를 잡기
임의로 총알 만들어 주기
총알을 생성할 'BulletGenerator'와 총알 발사를 컨트롤 할 'TestEnemy3Main' 만들어주기
▼ 결과 영상
▼ 스크립트
TestBullet
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
namespace LJE
{
public class TestBullet : MonoBehaviour
{
private Transform target;
private Rigidbody rBody;
public float maxSpeed = 10f;
public float moveForce = 2.0f;
void Start()
{
this.rBody = this.GetComponent<Rigidbody>();
}
void Update()
{
this.target = GameObject.Find("CenterEyeAnchor").transform;
//player 방향으로 총알에 AddForce
this.transform.LookAt(this.target);
this.rBody.AddForce(this.transform.forward * this.moveForce, ForceMode.Impulse);
//총알이 player보다 뒤로 갈 시 destroy
if (this.transform.position.z <= this.target.position.z)
{
Destroy(this.gameObject);
}
}
}
}
EnemyBulletGenerator
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace LJE
{
public class EnemyBulletGenerator : MonoBehaviour
{
public static EnemyBulletGenerator Instance;
[SerializeField]
private GameObject bulletPrefab;
[SerializeField] private Transform shootPos1;
[SerializeField] private Transform shootPos2;
private void Awake()
{
Instance = this;
}
public void GenerateBullet()
{
GameObject bulletGo = Instantiate(bulletPrefab, this.shootPos1);
GameObject bulletGo1 = Instantiate(bulletPrefab, this.shootPos2);
bulletGo.transform.SetParent(null);
bulletGo1.transform.SetParent(null);
}
}
}
TestEnemy3Main
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace LJE
{
public class TestEnemy3Main : MonoBehaviour
{
[SerializeField] private EnemyBulletGenerator bulletGenerator;
void Start()
{
this.StartCoroutine(CoCreateBullet());
}
IEnumerator CoCreateBullet()
{
yield return null;
while (true)
{
//2초마다 총알 생성
yield return new WaitForSeconds(2f);
this.bulletGenerator.GenerateBullet();
}
}
}
}
'VR 팀프로젝트 > [GroundZero] 제작 일지' 카테고리의 다른 글
GroundZero 제작일지 - Lobby Scene 데이터 연동 및 연출 R&D (0) | 2023.12.27 |
---|---|
GroundZero 제작일지 - GameOverScene 구현 (1) | 2023.12.21 |
GroundZero 제작일지 - 오른손 총 구현(바주카포) (0) | 2023.11.30 |
GroundZero 제작일지 - 아이템 비행체 구현 (0) | 2023.11.16 |
GroundZero 제작일지 - 왼손 방패 잡기 구현(LeftHandShield) (0) | 2023.11.08 |