基本原理:
两个不同频率的update驱动,比如一个0.1s,一个0.033s,慢的跑1次,快的可以跑3次。
项目实际中一个是ECS的update驱动,一个是引擎提供的Component的update。
慢频率的ECS的update驱动数据,快的Component的update驱动表现,也就是更新物件的position。
关键逻辑:
项目中都是直线行走,现在分析特殊的45°行走,直线的行走类似。
现在红点物件从A点要走到C点,45°行走。
慢频率的逐帧的逻辑:
// atan2(y,x)是表示XY平面上所对应的(x,y)坐标的角度,它的值域范围是(-π,π)
// 两个点之间与水平夹角之间的度数
let radians = Math.atan2(y,x);
let vx = Math.cos(radians);
let vy = Math.sin(radians);
红点物件没有超过C点。
红点物件从A点走到了B点,如何得到B点的position。
红点物件走的 c1 = speed * dt (红点物件的speed,dt每帧的间隔时间)
A、C点的坐标是知道的,通关Math.atan2可以得到图中θ对应的弧度。
得到图中的