gpt4 book ai didi

c++ - 如何制作弹丸?

转载 作者:行者123 更新时间:2023-11-28 03:52:45 26 4
gpt4 key购买 nike

我完全被这个难住了。我正在使用 C++ 和 SFML 1.6 来开发我正在开发的游戏,但我对此一无所知。如何制作射弹(如子弹)?我只是不明白。可能是我 sleep 不足,但我不知道。

所以我的问题是如何根据鼠标所在的位置创建一个沿确定方向移动的 Sprite? (想想用鼠标瞄准的自上而下的射手)

最佳答案

最简单的解决方案:如果鼠标在 Mx,My 而船在 Sx,Sy 然后计算从船到鼠标的方向:Dx=Sx-MxDy=Sy-My

现在对 D 进行归一化(这意味着对其进行缩放,使其长度为一):

DLen=sqrt(Dx*Dx + Dy*Dy)
Dx/=DLen;
Dy/=DLen;

现在 Dx 是您想要在 x 轴上移动子弹以获得子弹速度 1 的距离。

因此每一帧你都像这样移动子弹(子弹的位置:Bx,子弹的速度:Bs [以每毫秒像素为单位]帧时间 Ft [以毫秒为单位])

Bx=Bx+Dx*Bs*Ft
By=By+Dy*Bs*Ft

这会为您提供一颗子弹,它以独立于鼠标方向或游戏帧率的速度向鼠标位置移动。

编辑:正如@MSalters 所说,当鼠标直接位于船上方时,您需要检查 DLen==0 的情况,以避免在归一化时被零除错误

关于c++ - 如何制作弹丸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4848298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com