如果您检查joshmwilliams.com/javascript/pro-am处的代码,您将看到汽车的旋转由左右箭头键控制。我想让地图移动,以创建一个更大的“玩”区域,唯一的问题是我想不出一种方式让汽车旋转,以影响地图的X和Y移动。任何帮助将是伟大的!谢谢!通过元素旋转影响X和Y移动
回答
添加一个此外按钮为“速度”,将汽车(地图)移动到汽车的当前方向!
那么,你想根据方向移动汽车吗?
I'm afraid you'll need to use math!
无论如何,你可以通过执行以下计算运动方向:
- 首先,你需要让汽车的方向。如果你能够旋转它,你可能已经有了这个。请注意,大多数JavaScript函数使用弧度,而不是度数。
- 接下来,您需要获得x速度。这是通过获得角度的余弦并将其乘以汽车的速度来计算的。
- 最后,获得y的速度。这是通过获取角的正弦和乘法时使用的步骤2
这里以相同的速度计算是从我的游戏API几个节选的:
this.getXSpeed = function() {
this.direction = Game.Util.fixDirection(this.direction);
return Game.Util.cos(this.direction) * this.speed;
}
this.getYSpeed = function() {
this.direction = Game.Util.fixDirection(this.direction);
return -Game.Util.sin(this.direction) * this.speed;
}
...
getAngle : function(point1X, point1Y, point2X, point2Y, hyp) {
//This function uses the arcsine to calculate the angle between
//the points, but only if necessary.
//This function includes some shortcuts for common angles.
if(point1Y == point2Y) {
if(point1X < point2X) return 0;
else return 180;
}
if(point1X == point2X) {
if(point1Y < point2Y) return 90;
else return 270;
}
var xDist = point1X - point2X;
var yDist = point1Y - point2Y;
if(xDist == yDist) {
if(point1X < point2X) return 45;
else return 225;
}
if(-xDist == yDist) {
if(point1X < point2X) return 315;
else return 135;
}
if(hyp==null)
hyp = Math.sqrt(xDist*xDist + yDist*yDist);
var D_TO_R = this.D_TO_R; //57. something (radian to degree conversion)
if(point1X<point2X) {
return Game.Util.fixDirection(-Math.asin((point1Y-point2Y)/hyp) * this.D_TO_R);
} else {
return Game.Util.fixDirection(Math.asin((point1Y-point2Y)/hyp) * this.D_TO_R+180);
}
}
我对这个数学领域不太擅长。我如何获得角度的余弦? – JoshMWilliams 2012-03-08 18:19:51
Javascript内置三角函数:'Math.sin(radAngle)'和'Math.cos(radAngle)'将为您提供所需的数字。如果旋转汽车的角度为度数,则用“180/PI”(或57.29578)除。这会将其转换为弧度,而JavaScript需要用于trig函数。 – 2012-03-08 18:23:17
希望这将帮助你:
定义运动的初始参数,例如
var speed = 10; var angularStep = Math.PI/180; var rotation = 0;
减少或转向左边或右边时
angularStep
增加rotation
。可移动的对象(汽车或轨道)与此模式movableObject.x += speed * Math.cos(rotation); movableObject.y += speed * Math.sin(rotation);
- 1. Cyclejs和移动元素x和y
- 2. RaphaelJS移动旋转元素
- 3. As3 sprite旋转X和旋转Y
- 4. 移动CGPaths x,y像素?
- 5. 移动旋转的CSS元素
- 6. 在旋转后移动SVG元素
- 7. LayoutParams移动x和y
- 8. 基于旋转角度计算X Y移动?
- 9. 在JavaScript中以旋转方向移动旋转元素
- 10. 逐元素乘法(X,Y,1)*(X,Y)
- 11. 如何通过一个子元素影响元素的宽度,但不使用CSS影响元素的宽度
- 12. 当使用translate3d(x,y,z)移动元素时,是否可以找到元素的当前(x,y,z)?
- 13. 在Android中获取X和Y坐标旋转动画
- 14. 将元素移动到指定的X,Y坐标
- 15. iPhone/iPod的移动Safari浏览器使影像元素消失在旋转
- 16. 基本元素通过滑块围绕世界空间中的x,y,z轴旋转
- 17. CSS:在X和Y中心元素
- 18. 通过touchmove以20像素增量移动UIImage X坐标或Y坐标
- 19. 移动和旋转UIImageView
- 20. 停止旋转和移动
- 21. UIView旋转和移动
- 22. 如何通过XSLT移动元素
- 23. JfreeChart:Scatter Plot移动X和Y Axises
- 24. 通过不同的x,y坐标移动图像
- 25. 矢量的3D Z-Y-X旋转
- 26. iOS - 基于X,Y方向旋转UIImageView
- 27. 溢出元素:自动受浮动元素影响
- 28. 在C/C++中旋转后,在给定矩阵的x,y处查找元素?
- 29. 如何通过imagemagick上的X,Y偏移量来移动(平移)图像?
- 30. 旋转div元素
但如何
更新位置让我的车旋转影响如何X和Y的举动。否则,它只是侧面上下移动。我希望它按照汽车指向的方向移动 – JoshMWilliams 2012-03-08 17:48:10
按下按钮速度时,地图会完全朝相反的方向移动,但汽车停留在同一地点。 – powtac 2012-03-08 17:50:03
啊!没有意识到地图已经在移动... – powtac 2012-03-08 17:50:56