Javascript 这可能是什么原因造成的;“无人机”;在某些角度转弯时会感到紧张吗?

Javascript 这可能是什么原因造成的;“无人机”;在某些角度转弯时会感到紧张吗?,javascript,triggers,artificial-intelligence,angle,Javascript,Triggers,Artificial Intelligence,Angle,红点-无人机朝向 橙色点-无人机向左或向右转弯时发出信号 青色点-如果无人机正在重新计算角度/进行三角测量,则发出信号 该代码确实包含一个部分,它可以帮助平滑,基本上只需设置鼠标的角度,如果可以从testDrone.turnSpeed变量在一帧内到达鼠标的角度 大约有一半的时间,它转动自如。另一半,它变得紧张不安,交替地向左和向右转动,并持续计算三角 原因可能是什么?不错的脚本: 我认为抖动可能是(帧速率(fps)+处理时间)和显示器刷新率之间差异的函数。我这样说是因为有时候它看起来很平滑,有时

红点-无人机朝向
橙色点-无人机向左或向右转弯时发出信号
青色点-如果无人机正在重新计算角度/进行三角测量,则发出信号

该代码确实包含一个部分,它可以帮助平滑,基本上只需设置鼠标的角度,如果可以从testDrone.turnSpeed变量在一帧内到达鼠标的角度

大约有一半的时间,它转动自如。另一半,它变得紧张不安,交替地向左和向右转动,并持续计算三角

原因可能是什么?

不错的脚本:

我认为抖动可能是(帧速率(
fps
)+处理时间)和显示器刷新率之间差异的函数。我这样说是因为有时候它看起来很平滑,有时候有点粗糙,而且就鼠标的位置/移动而言,似乎没有什么特别的模式

您是否考虑过在
setTimeout()
上使用
requestAnimationFrame()
,哪个州

这将要求在浏览器执行下一次重新绘制之前调用动画函数。回调次数通常为每秒60次,但根据W3C建议,通常与大多数web浏览器中的显示刷新率相匹配。 请参阅的对关于限制
requestAnimationFrame
对特定帧速率的调用的响应

希望有帮助。:)

脚本不错。:)

我认为抖动可能是(帧速率(
fps
)+处理时间)和显示器刷新率之间差异的函数。我这样说是因为有时候它看起来很平滑,有时候有点粗糙,而且就鼠标的位置/移动而言,似乎没有什么特别的模式

您是否考虑过在
setTimeout()
上使用
requestAnimationFrame()
,哪个州

这将要求在浏览器执行下一次重新绘制之前调用动画函数。回调次数通常为每秒60次,但根据W3C建议,通常与大多数web浏览器中的显示刷新率相匹配。 请参阅的对关于限制
requestAnimationFrame
对特定帧速率的调用的响应


希望有帮助。:)

修复的方法是确保角度实际重置为特定值,而不是在超过特定限值时由Pi递增/递减。这是我的一个设计错误,因为抖动消除对“高于”Pi或“低于”Pi的角度不起作用

这意味着要进入更新功能:

update: function (ctx) {
    // reset angles below and above 2pi
    while (this.angle > Math.PI)
        this.angle = -Math.PI;
    while (this.angle < -Math.PI)
        this.angle = Math.PI;
更新:功能(ctx){
//重置2pi以下和以上的角度
而(this.angle>Math.PI)
this.angle=-Math.PI;
而(this.angle<-Math.PI)
this.angle=Math.PI;

修复的方法是确保角度实际重置为特定值,而不是在超过特定限制时由Pi增加/减少。这是我的设计错误,因为抖动消除对“高于”Pi或“低于”Pi的角度不起作用

这意味着要进入更新功能:

update: function (ctx) {
    // reset angles below and above 2pi
    while (this.angle > Math.PI)
        this.angle = -Math.PI;
    while (this.angle < -Math.PI)
        this.angle = Math.PI;
更新:功能(ctx){
//重置2pi以下和以上的角度
而(this.angle>Math.PI)
this.angle=-Math.PI;
而(this.angle<-Math.PI)
this.angle=Math.PI;

我很感激,但如果我替换该函数,它不会改变抖动……我很感激,但如果我替换该函数,它不会改变抖动。。。
update: function (ctx) {
    // reset angles below and above 2pi
    while (this.angle > Math.PI)
        this.angle = -Math.PI;
    while (this.angle < -Math.PI)
        this.angle = Math.PI;