【发布时间】:2017-12-02 13:36:56
【问题描述】:
对于我和朋友正在创建的游戏,我们正在制作雷达。我们已经制作了一个基本的雷达,从某种意义上说,一切都显示在正确的位置,但是我们正在尝试为雷达添加旋转。这种旋转是基于本地玩家的角度,从 0 度开始直接面向北方,顺时针旋转 360 度,直到再次向北。
我想知道如何从本地玩家角度旋转画布上的所有点(这些可以是其他玩家、物品等)。我们正在努力做到这一点,每当玩家向前走时,玩家也会在雷达中直接向上移动。无论旋转的程度如何,玩家在直接向前行走时都应该始终“向上”雷达。
我尝试进行基本的轮换,对每个玩家都这样: var baseX = x - localX, baseY = (canvas.height-y) - localY; var localAngle = toRadians(players[0].rotation);
var newX = baseX * Math.cos(localAngle) - baseY * Math.sin(localAngle);
var newY = baseX * Math.sin(localAngle) + baseY * Math.cos(localAngle);
newX += localX;
newY += localY;
问题在于我并不总是“提高”雷达,这取决于我在看哪里。谢谢。
【问题讨论】:
-
欢迎来到 StackOverflow!为了让我们帮助您解决编码问题,您需要真正向我们展示您的代码。请更新您的问题,使其在minimal, complete, and verifiable example 中显示所有相关代码。如需更多信息,请参阅有关how to ask good questions 的帮助文章,并采取tour of the site :)
-
添加了我尝试过的内容,但是,我不确定如何执行我的要求,因此提供代码有点困难。
标签: javascript html canvas rotation