如何让敌人在一开始就加快速度追逐玩家



我正在制作这个重力跑者游戏,我希望我的敌人跟随我的玩家。我遇到的问题是我希望我的敌人在屏幕外开始,所以他必须加速 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,您可以轻松地使用它来影响敌人的速度。

最新更新