【RAYSER開発】自機から一定距離まで近づく敵キャラの動き
RAYSERで自機から一定距離まで近づく敵キャラの動きを実装してみました。
敵の近づいてくる距離はエディターで制御できるようにしています。
敵から見た自機の位置と敵の位置の距離間をVector3.Distanceで取得し、その値を条件分岐で判定し、条件を満たす場合に移動をするようにしてみました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace RAYSER.Scripts.Enemy
{
public class EnemyMoveApproach : MonoBehaviour,IMovable
{
[SerializeField] private GameObject target;
[SerializeField] private float speed;
[SerializeField] private float stopDistance;
// Start is called before the first frame update
void Start()
{
target = GameObject.Find("Player");
}
// Update is called once per frame
void Update()
{
Move();
}
public void Move()
{
var targetPosition = target.transform.position;
transform.LookAt(targetPosition);
var distance = Vector3.Distance(transform.position, targetPosition);
if ( distance > stopDistance)
{
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation (target.transform.position - transform.position), 0.3f);
transform.position += transform.forward * speed;
}
}
}
}