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