【问题标题】:How to make enemy speed up in the beginning to chase player如何让敌人在开始追逐玩家时加速
【发布时间】:2014-11-27 17:14:53
【问题描述】:

我正在制作这款重力跑步游戏,我希望我的敌人跟随我的玩家。我遇到的问题是我希望我的敌人从屏幕外开始,所以他必须加速 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

            } 

        }
    }

}    

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    我认为最简单的方法是定义敌人应该加速的距离。大致如下:

    // 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;
    }
    

    所以当距离

    speedup = clamp((3 - 3) / 2) = 0
    

    当距离 >= 5 时,您会得到:

    speedup = clamp((5 - 3) / 2) = 1
    

    当距离从 5 变为 3 时,加速从 1 变为 0。所以speedup 会在敌人靠近玩家时从 1 变为 0,您可以轻松地使用它来影响敌人的速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      相关资源
      最近更新 更多