python 将度数转换为 x 的变化和 y 的变化
我正在用 pygame 用 python 制作一个蛇游戏,为了移动角色,我有一个整数,它是它应该移动的角度。有什么方法可以改变 x 和 y 来根据度数移动它吗?例如:func(90) # [0, 5]
或 func(0) # [5, 0]
I am making a snake game in python with pygame and for moving the character I have a integer which is the degrees of the angle it should move. Is there any way I can get the change in x and y to move it based on the degrees? For example: func(90) # [0, 5]
or func(0) # [5, 0]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
角度的正弦和余弦乘以移动总量,即可得出 X 和 Y 的变化。
The sine and cosine of the angle, multiplied by the total amount of the move, will give you the X and Y changes.
如果蛇只能以特定角度(例如 90 或 45 度)移动(这在此类游戏中很常见),那么您只能走 4 或 8 个方向。您只需将角度除以允许的增量即可获得方向索引,然后可以使用该方向索引索引 X/Y 偏移表。这比使用三角学要快得多。
更好的是,完全放弃角度概念,只使用方向变量。然后旋转蛇只是增加或减少方向的简单问题。
如果需要,可以轻松扩展到 8 个方向(以 45 度增量移动)。
If the snake can only move at certain angles (e.g. 90 or 45 degrees), which is typical in such a game, there are only 4 or 8 directions you can go. You can just divide your angle by the permitted increment and get a direction index, which can then be used to index into a table of X/Y offsets. This will be a lot faster than using trigonometry.
Better yet, dispense with the angle concept entirely and just use a direction variable. Then rotating the snake is a simple matter of incrementing or decrementing the direction.
This can easily be extended to 8 directions (moving at 45 degree increments) if desired.