刚开始我认为这个检出的过程应该这样:
需要综合 上一次同步点 与 上一次同步的载具旋转角度与当前载具的旋转角度差值,然后三角函数计算出预测下一个落点。再将这个落点与当前要同步的点进行匹配。如果是一个点就不进行同步。
这个判定的计算非常繁琐,还需要额外记录载具的角度变化,那么有什么办法不看载具信息吗 ?
我们再分析下这个需求,载具平台旋转,子物体跟转,相对静止。
有句话是这样说的,当你不知道解题思路,你把题干抄下来,也是能得分的。
没错,答案就是 相对静止。
由于是相对静止(船心坐标O),向量 OA蓝色 与 OA红色 他们的长度是没有变化的。
也就意味着,只需要计算上一次同步的相对位置与当前位置的长度差值。就可以判断玩家是否在载具平台上有位移。
bool isMove = Mathf.Abs( lastSyncRelPosition.magnitude - currentRelPosition.magnitude) > 0.01f
当然也可以优化成下面这样,不开方更省一些性能:
bool isMove = Mathf.Abs( lastSyncRelPosition.sqrMagnitude - currentRelPosition.sqrMagnitude) > 0.01f
大概如此,当然精度可以根据不同的需求进行调整。好了,今天的分享就到这,下期再会 !