gpt4 book ai didi

c# - 选择一个随机方向并移动

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:12 24 4
gpt4 key购买 nike

我希望能够选择一个随机角度(在 0 到 360 度或 0 到 2pi 之间),然后让 Sprite 朝那个方向移动。到目前为止,我已经尝试过这个,但是它一直很无效,因为它总是向下移动,而且角度选择不是很好。

Random rand = new Random();

//Chooses the Angle
rotation = (float)rand.NextDouble()*MathHelper.TwoPi;

//Is supposed to get a normalized movement vector that moves in the direction of that angle.
moveVector = Vector2.Normalize(new Vector2(-(float)Math.Tan(rotation), 1));

最佳答案

您似乎缺少一点三角学知识:

您正在创建一个 Y 分量始终为 1 的向量(在 2D XNA 中向下)。所以,无论随机角度如何,它只影响方向的水平部分。

要将角度转换为(单位,即已经归一化的)方向向量,您可以使用 sin 和 cos(想想单位圆):

var dir = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));

由于 XNA 将原点放在 2D 屏幕的左上角,您需要反转 y 分量:

var dir = new Vector2((float)Math.Cos(angle), -(float)Math.Sin(angle));

此外,为了确保获得正确的随机数序列,您应该只创建一次随机对象,然后每次都使用相同的实例来获得下一个随机数。

此外,为了获得更顺畅的运动,您可以根据您已经进入的方向对方向进行加权,或者选择一个随机目的地并前往该目的地(然后选择另一个,等等)。

关于c# - 选择一个随机方向并移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534171/

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