y90 和 z90的原因是为了 让2D的水背景和 3D船 统一,这样移动船只需考虑X和Y轴,没有Z轴的事了,但旋转起来我彻底乱了,一团浆糊。
调整模型我现在有点恐惧,因为要用blender去调整,还要调整节点,搞刚体等,最重要的是2.4.6的fbx导入很乱,导入一次贴图就丢一次,还要一个个的绑,gtlf也没法用,还只能fbx
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);
也不是恶赖引擎,如果不是冲量导致船挺尸(和其他碰撞后弹走的时候也有一段时间的挺尸时间)也不会手忙脚乱的来处理角度问题。
我实在不想去看引擎的代码了。
感谢,但也还是没有欧拉角带角度的计算,算了,我去找引擎里关于船挺尸的原因吧,不挺尸就不会有这个bug,感谢各位的分析和协助 @468179984 @1261414791 @tjoxcode
或者找找挺尸的规律,再或者受到冲量的时候就不允许控制。
我觉得有冲量的时候,不能操控挺好的
大佬,这个在点前进之后,再移方向好像移动方向没有变耶
你感受一下真实的船,也是这样的
应该会随船头有个角度的吧?轨迹照理来说不应该是弧线吗?
临时做的demo…你就当是旋转木马吧
膜拜大佬!!
在将这个demo转为2D和3D同时使用(水面是2D)的时候遇见了问题,和2.46有区别,正在尝试在这个demo中重现场景
ship 2 2.zip (2.6 MB)
在demo中,我把在我项目中的模型默认角度修改成了我的情况,修改后摇杆旋转的角度就出错了,之所以将模型扭成这个角度,是为了配合2D的背景(水面),因为在2.46中,使用2D的shader做水面,性能才能看,才能继续做。
但我不知道为什么在3.32中,如果打开背景(2D sprite),会导致模型不显示,2.46则不会,但意思是对了,也就是模型的默认角度是我现在项目中的情况。
请给看下当前情况下怎么旋转模型
说的有些不清楚,总结的说下
因为2D的图片做水面,所以镜头只能冲着2D的内容去看,也就是如图的意思
而您的demo中本来的镜头方向是向下看,原来的模型旋转是正确的,但镜头一旋转看向UI,模型的旋转自然就不正确了。
为了配合2D水面,只能将船调成符合水面的角度,也只能在将船调成水面角度的前提下,对船进行旋转
如果给模型套个壳(node),如图,并将壳旋转成镜头的角度,那么船的旋转又正确了,好像这也是一个正确的解决方法。
ship 4.zip (2.8 MB)
这个是按照楼上的办法转换后的demo,一直想问的是怎么在不套一个node情况下正确的通过欧拉角旋转船,我之前的计算方法是通过四元数计算角度差后,对船进行旋转,如果想直接设置船的欧拉角旋转似乎计算很复杂
套壳快捷,而且符合编辑器本身的物理特性;
如果不用壳,计算Z轴旋转,需要重新写旋转方法,
代码在 ship01.js update里,
理解清楚每行代码做了什么,也是可以自己写的.
就是调试加修改麻烦点
合力不是已经求出来了吗,Math.atan2(vy, vx) 就可以求出角度了吧