我正在制作这个重力跑者游戏,我希望我的敌人跟随我的玩家。我遇到的问题是我希望我的敌人在屏幕外开始,所以他必须加速 2 秒才能接近玩家。我正在用 C# 中的 Unity 制作游戏。我该怎么做?这是我的代码,所以我的敌人跟随我的玩家:
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour {
public Transform target;
public int MoveSpeed = 18;
public int MaxDist = 2;
public int MinDist = 0;
private Zwaartekracht vijand;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.LookAt(target);
if(Vector3.Distance(transform.position,target.position) >= MinDist){
transform.position += transform.forward * MoveSpeed * Time.deltaTime;
if(Vector3.Distance(transform.position,target.position) <= MaxDist)
{
//Here Call any function U want Like Shoot at here or something
}
}
}
}
我认为最简单的方法是定义敌人应该加速的距离。大致如下:
// Enemy will speed up if he's further away than this
float speedupDistance = 3.0f;
// Distance to smooth out deceleration for speed up
float speedupTransition = 2.0f;
void Update() {
float distance = Vector3.Distance(transform.position, target.position);
float speedup = Mathf.Clamp01((distance - speedupDistance) / speedupTransition);
float enemySpeed = usualSpeed + maximumOfAditionalSpeed * speedup;
}
因此,当距离为 <= 3 时,您会得到:
speedup = clamp((3 - 3) / 2) = 0
当距离为>= 5 时,您会得到:
speedup = clamp((5 - 3) / 2) = 1
当距离从 5 到 3 时,加速比从 1 变为 0。因此,当敌人接近玩家时,speedup
会从 1 过渡到 0,您可以轻松地使用它来影响敌人的速度。