【发布时间】:2021-03-19 02:55:27
【问题描述】:
我希望我的问题不是太愚蠢,我对 FixedUpdate 不是很熟悉。 我知道 FixedUpdate 通常用于物理,但在我的游戏中,我有以下问题:当它以低 fps 速率运行时,敌人会跳过检查点(因为它们在一帧中移动太多)。 动作方法:
void FixedUpdate()
{
TestIfCloseToOtherZombie();
//chopper la direction dans laquelle aller
Vector3 dir = target.position - transform.position;
//déplacer l'enemy
transform.Translate(dir.normalized * enemy.speed * Time.fixedDeltaTime, Space.World);
Vector3 rotDir = new Vector3(dir.x, 0, dir.z);
if(rotDir != Vector3.zero)
{
Quaternion lookRotation = Quaternion.LookRotation(rotDir);
transform.rotation = Quaternion.Lerp(transform.rotation, lookRotation, turnSpeed*Time.fixedDeltaTime);
}
//marge d'erreur pour éviter qu'il bug dans le waypoint (+ de speed = + de marge sinon bug)
if(Vector3.Distance(transform.position, target.position) <= enemy.wayPointPrecision){
GetNextWaypoint();
}
if(!isToClose)
{
enemy.speed = enemy.baseSpeed;
}
GetCurrentPosition();
}
目标是敌人要去的检查点。 以前,我使用了 wayPointPrecision 值来解决问题。但是当 fps 太低时,这还不够。
我只想知道是否可以使用 FixedUpdate 来确保独立于帧速率计算运动,即使它不使用物理。
【问题讨论】: