将偏航保持在两个偏航范围内
Keep a yaw within two yaws
我试图阻止用户向左或向右转得太远,但在关闭我的支票时,偏航有时会从 0 变为 360。
我有一个主偏航,我想防止用户从主偏航改变他们的偏航 60/-60。主偏航是动态的,完全随机变化
这是我目前正在使用的代码(不能正常工作)
float playeryaw = passenger.yaw; //The user
float right = car.yaw + 60;
float left = car.yaw - 60;
if (right > 360) { //Some checks to insure the YAW isn't negitive or too high
right -= 360;
} else if (right < 0) {
right += 360;
}
if (left > 360) {
left -= 360;
} else if (right < 0) {
left += 360;
}
if (playeryaw < left) {
playeryaw = left;
} else if (playeryaw > right) {
playeryaw = right;
}
基本上我想防止汽车的 driver 从右边或左边看得太远。
您需要确保right > left
。所以你不能只更新一个界限。无论如何,我建议修改 playeryaw
:
float playeryaw = passenger.yaw; //The user
//put playeryaw in the neighborhood of car.yaw
while(car.yaw - playeryaw > 180)
playeryaw += 360;
while(car.yaw - playeryaw < -180)
playeryaw -= 360;
float right = car.yaw + 60;
float left = car.yaw - 60;
if (playeryaw < left) {
playeryaw = left;
} else if (playeryaw > right) {
playeryaw = right;
}
//put playeryaw in the desired range
while(playeryaw < 0)
playeryaw += 360;
while(playeryaw > 360)
playeryaw -= 360;
根据您使用的值,while
语句可以切换为if
(如果您可以确保值最多相差360°)。
我试图阻止用户向左或向右转得太远,但在关闭我的支票时,偏航有时会从 0 变为 360。
我有一个主偏航,我想防止用户从主偏航改变他们的偏航 60/-60。主偏航是动态的,完全随机变化
这是我目前正在使用的代码(不能正常工作)
float playeryaw = passenger.yaw; //The user
float right = car.yaw + 60;
float left = car.yaw - 60;
if (right > 360) { //Some checks to insure the YAW isn't negitive or too high
right -= 360;
} else if (right < 0) {
right += 360;
}
if (left > 360) {
left -= 360;
} else if (right < 0) {
left += 360;
}
if (playeryaw < left) {
playeryaw = left;
} else if (playeryaw > right) {
playeryaw = right;
}
基本上我想防止汽车的 driver 从右边或左边看得太远。
您需要确保right > left
。所以你不能只更新一个界限。无论如何,我建议修改 playeryaw
:
float playeryaw = passenger.yaw; //The user
//put playeryaw in the neighborhood of car.yaw
while(car.yaw - playeryaw > 180)
playeryaw += 360;
while(car.yaw - playeryaw < -180)
playeryaw -= 360;
float right = car.yaw + 60;
float left = car.yaw - 60;
if (playeryaw < left) {
playeryaw = left;
} else if (playeryaw > right) {
playeryaw = right;
}
//put playeryaw in the desired range
while(playeryaw < 0)
playeryaw += 360;
while(playeryaw > 360)
playeryaw -= 360;
根据您使用的值,while
语句可以切换为if
(如果您可以确保值最多相差360°)。