【发布时间】:2018-04-08 05:45:12
【问题描述】:
使用 Golang 制作游戏,因为它似乎非常适合游戏。我让玩家总是面对鼠标,但想要一个转身速度来让某些角色比其他角色转得慢。以下是它计算转弯圆的方法:
func (p *player) handleTurn(win pixelgl.Window, dt float64) {
mouseRad := math.Atan2(p.pos.Y-win.MousePosition().Y, win.MousePosition().X-p.pos.X) // the angle the player needs to turn to face the mouse
if mouseRad > p.rotateRad-(p.turnSpeed*dt) {
p.rotateRad += p.turnSpeed * dt
} else if mouseRad < p.rotateRad+(p.turnSpeed*dt) {
p.rotateRad -= p.turnSpeed * dt
}
}
mouseRad 是转弯面对鼠标的弧度,我只是添加转弯速率 [在本例中为 2]。
当鼠标到达左侧并穿过中心 y 轴时,弧度角从 -pi 变为 pi,反之亦然。这会导致玩家进行完整的 360 度全景拍摄。
解决此问题的正确方法是什么?我尝试将角度设为绝对值,但它只发生在 pi 和 0 [y 轴中心正方形的左侧 和 右侧]。
基本总结:
玩家慢慢旋转跟随鼠标,但当角度达到 pi 时,它会改变极性,导致玩家做一个 360 度 [将所有的返回计数到相反的极性角度]。
编辑: dt 是增量时间,显然只是为了在运动中进行适当的帧解耦变化
p.rotateRad 从 0 开始,是一个 float64。
Github repo 临时:here
您需要this library 来构建它! [去拿吧]
【问题讨论】:
-
有什么方法可以把它推送到一个仓库,这样我就可以记录一些东西来调试和测试?
-
@Ron 是的,给我一分钟。它显然使用了 Go,还有库 github.com/faiface/pixel——去搞定吧
-
@Ron 添加到主帖
-
谢谢,我知道有人已经回答了,但我还是要下载并检查一下。我之前没有使用过任何可视化库,我想弄乱它。
标签: math go triggers mouse game-physics