这可能是一个简单的问题,但我无法让它发挥作用。 我试图进行一次关键交互,当按下时,它会检查相机的位置,并根据它的位置做不同的事情。 这是其中的一部分:
function onKeyDown (event) {
switch (event.keyCode) {
case 49: /*1*/
if (looking){
//P1
if (-36 < (camera.position.x) < -25) {if (-10 < (camera.position.z) < 10){
//P1stuff
looking = false, text.innerHTML = "Painting1", controls.movementSpeed = 0, controls.rollSpeed = 0
} else{}
}
在我的实际项目中还有以下内容,我已经取代了if语句的条件,所以我的代码工作正常,只是没有读取我的相机的位置当格式化为&#34;(a&lt;(camera.position.x)&lt; b)&#34;办法。 我如何打算输入if并执行此类检查?
答案 0 :(得分:3)
(-36 < (camera.position.x) < -25)
错了,您基本上是在执行以下操作
var foo = -36 < camera.position.x; // foo will be either true or false;
然后你的第二次比较基本上是true < -25
,这不是你想要完成的。
您需要做的是将比较器分开:((-36 < camera.position.x) && (camera.position.x < -25))
,如下所示:
function onKeyDown (event) {
switch (event.keyCode) {
case 49: /*1*/
if (looking){
//P1
if (-36 < camera.position.x && camera.position.x < -25) {
if (-10 < camera.position.z && camera.position.z < 10) {
//P1stuff
looking = false;
text.innerHTML = "Painting1";
controls.movementSpeed = 0;
controls.rollSpeed = 0
} else { }
}
...
答案 1 :(得分:0)
它应该简单地分成两段布尔逻辑,并结合AND操作。
// -36 < camera.position.x < -25 becomes two Boolean boundary conditions...
if (camera.position.x > -36 && camera.position.x < -25) {
// do something
}
相机位置是我们在这里检查的相关属性,因此将其放在逻辑检查中的第一位是最明智的。