我需要在Lazarus / Freepascal中编制游戏。在这个游戏中,玩家有能力跳跃"从行星到行星,如This。
跳跃本身已实施,但登陆并不起作用。起初我尝试使用余弦定律计算我的球员角色的正确位置,但这并没有真正成功。然后我尝试通过重新排列用于移动的代码来获得正确的位置:
if getkeystate(vk_left) < 0 then
begin
currotp1 := currotp1 - 2;
end;
if getkeystate(vk_right) < 0 then
begin
currotp1 := currotp1 + 2;
end;
edit1.Text := IntToStr(currotp1);
GTR.left := trunc(-cos(currotp1 / 180 + pi) * (-r)) + curplaxp1;
GTR.top := trunc(-sin(currotp1 / 180 + pi) * (-r)) + curplayp1;
while currotp1 > 1130 do
begin
currotp1 := currotp1 - 1130;
end;
while currotp1 < 0 do
begin
currotp1 := currotp1 + 1130;
end;
变成:
addrotp1 := (-arccos(DegToRad((GTR.top - yorigins[notplanump1]) / (-
rs[notplanump1]))) - pi) * 180;
currotp1 := round(addrotp1);
澄清:
Currotp1是玩家1的当前旋转值。 1130&#34;单位&#34;是一个完整的 轮换
GTR.left和GTR.top是我的播放器的坐标
请建议解决此问题的方法/解决方案。