如何让敌人在开始时加速追逐玩家

时间:2014-11-27 17:14:53

标签: c# unity3d

我正在进行这种重力赛跑比赛,我希望我的敌人跟随我的球员。我遇到的问题是我希望我的敌人从屏幕外面开始,所以他必须加速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

            } 

        }
    }

}    

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是确定敌人应该加速的距离。有点像:

// 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,你可以轻松地使用它来影响敌人&# 39;速度。