[英]Get x and y Movement Based On Angle, Sort Of
我知道如何正常進行此操作,假設向上是0度
X += Speed * Math.Cos(angle);
Y += speed * Math.Sin(angle);
但是,如果我假設向上實際上是270度,而右邊是0度,我不知道該怎么做。 (我使用的是Game Maker,他們決定將正確的角度設為0度而不是向上)
我將如何去做呢? 我可能會忽略一個簡單的解決方案,但是在數學方面我並不是最聰明的人。
X + =速度* Math.Cos((角度+ 270)%360);
那就是我會做的。 由於您將圖形逆時針旋轉270度。
您所需要做的就是調整角度。 您將北測量為0 degrees
此程序將北測量為270 degrees
。 要解決此問題,只需減去它們偏離的270
。 這樣的事情就足夠了:
# angle is the programs offset version (North=270)
# corrected_angle is your fixed version (North=0)
corrected_angle = angle-270; # mod by 360 if you it to be non-negative
X += Speed * Math.Cos(corrected_angle);
Y += speed * Math.Sin(corrected_angle);
[注意:如果(1,0)和(0,1)不在您期望的位置,那么您將需要調整的不僅僅是角度。 這也假設在程序中順時針旋轉時角度增加,並且在順時針旋轉時希望角度增加。 ]
如果您實際上使用的是GameMaker,則它們具有名為lengthdir_x和lengthdir_y的函數,它們可以完全滿足您的要求(以大小和角度(以度為單位)查找長度)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.