物理上的轮换问题
rotation issue on physijs
我正在使用这个库很短的时间,我有一个杀死我的问题。
我有 2 个立方体,一个带有 phisy.js另一个带有三个.js,我有一个功能,当您根据相机的旋转按 A、S、D 或 W 键时旋转它们,我的代码是这样的:
var v = new THREE.Vector3(0, 0, 0);
if (keys.forward === 1)
v.x = -1;
if (keys.right === 1)
v.z = 1;
if (keys.backward === 1)
v.x = 1;
if (keys.left === 1)
v.z = -1;
//get the searched angle
var angle = camera.rotation.y + Math.atan2(v.x, v.z);
var rot = normalMesh.rotation.y;
var diff = angle - rot;
if (Math.abs(diff) > Math.PI) {
//find the shortest way to rotate
if (diff > 0)
rot += 2 * Math.PI;
else
rot -= 2 * Math.PI;
diff = angle - rot;
}
//get the /2 for a smooth rotation, i really need this
if (diff !== 0)
rot += diff / 2;
normalMesh.rotation.set(0, rot, 0);
在三个.js立方体上工作正常,但在物理.js立方体上我不起作用。
我为此创建了一个演示(我无法在 jsfiddle 上创建它,因为网络工作者)
http://demo.cristobaldiaz.cl/test/
我也把源代码留在一个zip文件上---> http://demo.cristobaldiaz.cl/test/issue.zip
您可以在第 95 行 http://demo.cristobaldiaz.cl/test/src/app.js 检查移动功能
无论如何,如果使用鼠标旋转相机,则可以检查将立方体旋转到红色网格体方向时是否出现问题。
您可以从动画循环中删除旋转更新并将其移动到物理循环中:
scene.addEventListener('update', function(){
actor.onRender();
})
这样它将始终保持同步。
有关更多详细信息,请参阅此页面 https://github.com/chandlerprall/Physijs/wiki/Callbacks-&-Events。
相关文章:
- Safari(Mac OS)上的jQuery平滑滚动问题
- JavaScript上的表单和innerHTML问题
- mouseOver上的隐藏图像问题
- 较大引导转盘中的较小引导转盘-较小引导转盘上的旋转功能问题
- 在firebase(web)上存储数据时出现问题
- 多上传的JavaScript问题
- AWS Lambda上的权限问题,可以't派生子进程
- 可以'由于CORS问题,无法访问Heroku上的Flask API
- 轴助手上的标签与文本几何和旋转问题
- 在qualtrics上使用javascript:循环块中的问题id
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 图像缩略图库中的“下一个”和“上一个”按钮中的“问题”
- 在服务器上通过jQueryAjax上传加载的图像时出现问题
- 同一页面上有两个谷歌图表的渲染问题
- 跨浏览器问题:如何调试我的网站'在windows PC的safari上的行为
- 让Javascript在SharePoint 2010上运行时遇到问题
- 高图表和表达式语言问题 - 标记“{”上出现语法错误
- 物理上的轮换问题
- 使用angular js的验证问题(firefox上显示红色边框)
- 当涉及到重载时,Javascript会选择物理上最接近的方法吗