gpt4 book ai didi

javascript - 创建霰弹枪传播模式 (babylon.js)

转载 作者:行者123 更新时间:2023-12-03 00:45:20 26 4
gpt4 key购买 nike

您好,我是babylonjs 的新手,这几天我一直在尝试在babylon.js 中创建一个恒定的散弹分布模式。

目前我的方法包括准备好几行以在数组中显示:

       let sgPellets = [
BABYLON.Mesh.CreateLines("lines", [
shotgunPosition,
meshFound.pickedPoint
], this.Player.game.scene),
BABYLON.Mesh.CreateLines("lines", [
shotgunPosition,
meshFound.pickedPoint
], this.Player.game.scene),
]

其中,shotgunPosition 是霰弹枪网格在世界中的绝对位置,meshFound.pickedPoint 是我瞄准的位置(在网格上)。

因此,我可以在霰弹枪网格和我单击的网格之间画一条线(在本例中为数组的第一条)。

现在对于第二行,我希望它从第一行开始在 y 轴上旋转一点(这正是我的目标),所以:

          for(let k=0; k<sgPellets.length; k++){
sgPellets[k].setPivotPoint(shotgunPosition);
sgPellets[k].isPickable = false;
switch(k){
case 1:
sgPellets[k].rotation.y += 0.1
break
}
}

当我从侧面看时,效果确实很好 enter image description here

但当我向上或向下看时就不会了。 enter image description here

我想我在数学方面遗漏了一些东西。我还尝试使用其他旋转方法,以获得相同的结果。

有人对如何使两条线之间的 Angular 恒定有任何提示吗?谢谢。

最佳答案

谢谢您的回答!你猜对了,我正在使用 scene.pick。我已经测试了您的方法,效果非常好,我还能够在桶和场景中选取的点之间创建一个圆锥体。但我并不是很满意。尽管我认为您的方法无法在所选点所在的任何位置形成一致的模式,所以我最终做了其他事情。我创建了第二个“假”相机,它可以精确旋转并定位在真实相机的位置,这要归功于:

fakeCamera.rotationQuaternion = BABYLON.Quaternion.RotationYawPitchRoll(camera.rotation.y,camera.rotation.x,camera.rotation.z)

这样我就可以将 .rotationQuaternion 添加到假相机中,并从真实相机中转换位置和转换后的旋转(我无法为真实相机添加四元数,它会弄乱控件)。最后,我能够根据场景中的pickPoint和假相机的rotationQuaternion值来定位每条光线。

关于javascript - 创建霰弹枪传播模式 (babylon.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53272683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com