如果您檢查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. 在旋轉後移動SVG元素
- 6. 移動旋轉的CSS元素
- 7. LayoutParams移動x和y
- 8. SDL x和y移動
- 9. jQuery的旋轉類通過元素
- 10. 旋轉後的全局X和Y
- 11. 旋轉圖表的X和Y軸
- 12. 沿着x軸和y軸旋轉
- 13. 基於旋轉角度計算X Y移動?
- 14. 在JavaScript中以旋轉方向移動旋轉元素
- 15. 爲什麼旋轉UIImageView會影響其他UI元素?
- 16. 逐元素乘法(X,Y,1)*(X,Y)
- 17. 如何通過一個子元素影響元素的寬度,但不使用CSS影響元素的寬度
- 18. 如何繞x軸旋轉2D(x,y)像素?
- 19. css與過渡旋轉似乎影響其他元素不透明?
- 20. 旋轉畫布影響TouchEvents
- 21. 當使用translate3d(x,y,z)移動元素時,是否可以找到元素的當前(x,y,z)?
- 22. 溢出-y正在影響溢出-x
- 23. 動態獲取raphaeljs元素的x和y值(即使它移動了)
- 24. 將元素移動到指定的X,Y座標
- 25. 查找水平移動元素的每個X,Y位置
- 26. iPhone/iPod的移動Safari瀏覽器使影像元素消失在旋轉
- 27. 如何不影響受過濾器影響的元素內的元素?
- 28. 移動多個div的x和y在鼠標x,y在js
- 29. 基本元素通過滑塊圍繞世界空間中的x,y,z軸旋轉
- 30. CSS:在X和Y中心元素
但如何
更新位置讓我的車旋轉影響如何X和Y的舉動。否則,它只是側面上下移動。我希望它按照汽車指向的方向移動 – JoshMWilliams 2012-03-08 17:48:10
按下按鈕速度時,地圖會完全朝相反的方向移動,但汽車停留在同一地點。 – powtac 2012-03-08 17:50:03
啊!沒有意識到地圖已經在移動... – powtac 2012-03-08 17:50:56