五斗米折腰

:warning: 声明,如果有任何侵权或者错别字,讲错话等违法或非违法行为,请先冷静,不要联系 麦德姆或德姆,都好商量。在冲量,不xi轻喷。:dog::dog::dog:

在 Cocos Creator 2.4 里面让 3D 模型转起来

  • 让模型转起来

毕竟是款2D引擎,3D能支持就应该知足了,但是幸运的事是写js就可以,不用改引擎,况且俺还不具备改引擎的能力,在修炼中…

如何让模型自由的转呢?x和y轴其实也比较容易,就是手移动移动,计算跟上就好了,但是只转 x\y 貌似不太灵活,这里推荐下得物( 毒 )的一个隐藏功能,做的其实还不错

上点代码吧,不然显得贴太水

核心 API :

cc.Quat.rotateAround,这个东西有点小坑,就是参数,一共 4 个参数,

  • 第一个参数是一个四元数的值,可以 new 一个,不是很重要

  • 第二个参数是需要旋转的对象的当前朝向,node.getRotation就可以了,要normalize一下,不然会转变形,应该是底层没写好,不是很重要 ( normalize 需要两个参数 ,而且两个参数保持一致 )

  • 第三个参数是旋转轴,这个东西对自身旋转很重要,一样的问题,用之前需要normalizeSelf一下,不然会转变形,不是很重要

  • 最后一个参数是要旋转的角度,扔进去要转几度就好了,不是很重要

基本坑就是上面

那就转起来吧:

x 轴:Math.abs( deltaY ) * RotationSpeed * cc.director.getDeltaTime();

( 1 ) deltaY : from event.getDelta()

( 2 ) RotationSpeed : 就不想一个速度转

( 3 ) cc.director.getDeltaTime() : 跟着时间转会不会丝滑一些,不知道这个方法性能好不好,能用先用吧

y 轴:Math.abs( deltaX ) * RotationSpeed * cc.director.getDeltaTime();

ctrl + c, ctrl + v, 把 Y 改成 X 就可以了

z 轴 :( 小知识点 )

----- 此处有个池子,但是不让上传那就算了把 -----

角度 :cc.v2( moveX, moveY ).mag()

旋转轴 :cc.v3( moveX, moveY, 0.)…也要 normalizeSelf

  1. 斜着的角度就是斜着滑动的距离
  2. 旋转轴的话就是x方向和y方向两个向量的和

其实不难,只是转个小弯

附件放个脚本,挂到一个遮住屏幕的节点上,拖一个要旋转的对象上去就可以了,和“得物“学的有惯性,具体实现比较简单就是短时间内收集一些旋转缓存,然后求平均,让旋转对象多转一会就好了,只是一种途径,有更好的欢迎指导 :clap::clap::clap:
90687204-6793-4b5a-9d5d-1b5b2ee104b0
附件:TouchControllerV2.js.zip (3.0 KB)
***** 那就这样吧。。。:rose::rose::rose:

1赞

楼主是在给得物开发商品的 3D 展示么?

哈哈哈。。。支持下。。。我等会找得物收下中介