通过欧拉角设置物体的角度问题

有没有要求船旋转到目标角度需要缓动旋转。而不是直接设置

如果能有缓动那就更好了,摇杆操作船本身就不合理,应该是方向盘,也就是船舵,这样摇杆转到哪里,船头立刻转到哪里的方式本身体验就不好,但我又没有办法写出缓动的方法来

如果可以直接设置。如果不计算角度差。直接计算遥感角度。直接代入到船的角度不可以吗?

对对,我就是想达到这样的效果

就像这种,直接把摇杆角度代入,写出船的角度

但我不知道具体怎么写,因为船本身的旋转属性不是 X0 Y0 Z0,而是X=0 Y=90
Z =90

你这个只有一个绕一个轴的方向旋转。也不存在欧拉角触发万向锁的问题。直接用欧拉角去算就好了。不用四元素。船的默认角度多了90.其实也可以换算。你假设还不知道。直接再外层再包一层空节点。旋转属性都是0 .或者直接找美术让他给你调整模型。

y90 和 z90的原因是为了 让2D的水背景和 3D船 统一,这样移动船只需考虑X和Y轴,没有Z轴的事了,但旋转起来我彻底乱了,一团浆糊。

调整模型我现在有点恐惧,因为要用blender去调整,还要调整节点,搞刚体等,最重要的是2.4.6的fbx导入很乱,导入一次贴图就丢一次,还要一个个的绑,gtlf也没法用,还只能fbx

额。。直接把遥感角度设置给模型的欧拉角。如果不对。你看一下是不是正好相反或者怎么样。去-90或者+90 或者+180 -180

试过了,this.shipNode.eulerAngles = cc.v3(0, -this.current_angle, 0);
以这样的形式,x从90 -90 180 -180 Z 从90 -90 180 -180 都写过,
最好的情况是
this.shipNode.eulerAngles = cc.v3(0, -this.current_angle, -180);
还贴合点
船自身旋转对了,但船90度栽在水面里。

如果
this.shipNode.eulerAngles = cc.v3(0, -this.current_angle + 90, -180);

也不是恶赖引擎,如果不是冲量导致船挺尸(和其他碰撞后弹走的时候也有一段时间的挺尸时间)也不会手忙脚乱的来处理角度问题。
我实在不想去看引擎的代码了。


我的是laya cocos应该差不多了。

感谢,但也还是没有欧拉角带角度的计算,算了,我去找引擎里关于船挺尸的原因吧,不挺尸就不会有这个bug,感谢各位的分析和协助 @468179984 @1261414791 @tjoxcode

或者找找挺尸的规律,再或者受到冲量的时候就不允许控制。

我觉得有冲量的时候,不能操控挺好的

RF93X%Z1ULTAGN8)O}XC4 R5QA~E~4WLN(F4JFSX@Z(V M{W5Y7DP0@5@UHGW87IVN8
额。是这样吗?我这边挺正常的。

Cocos Creator | NewProject 你看看是不是你要的效果
项目发你了 cocos 3.3.2版本的
ship.zip (2.5 MB)

2赞

大佬,这个在点前进之后,再移方向好像移动方向没有变耶

你感受一下真实的船,也是这样的

应该会随船头有个角度的吧?轨迹照理来说不应该是弧线吗?

临时做的demo…你就当是旋转木马吧 :cold_sweat:

膜拜大佬!!

在将这个demo转为2D和3D同时使用(水面是2D)的时候遇见了问题,和2.46有区别,正在尝试在这个demo中重现场景