我怎样才能为我的对象的(黑色)行进方向(绿色)计算有效范围(红色)。 绿色是一个Vector2,其中x和y的范围是-1到1。
我在这里要做的是创造火箭燃料燃烧效应。 所以我得到的是
我可能认为火箭的速度并不重要,因为燃料燃烧效应(粒子)是以自己的速度在位置上产生的。
你需要一个正常的vector为你的火箭方向。 您可以使用叉积来计算它,在二维结果为normal = vector(direction.y, -direction.x);
现在刻录vector只是“方向”和“正常”的归一化线性组合。 例如
float k = random() * 0.3; burn = normalize(normal * k - direction * (1 - k));
我建议你计算vector的极角(X轴的角度)。 然后,您可以旋转180°,并为每个粒子添加一个随机化的值,基于烧伤效果锥体的宽度(例如+/- 30°)。 然后将角度转换回vector。
这里有一些C#示例代码来将PolarAngle属性添加到Vector2D类。 请注意,它在Radian中运行不是学位。
/** * An angle describing the orientation of the Vector. (-1,0) is 0. (1,0) is Pi. */ public double PolarAngle { get { return Math.Atan2(Y, X) + Math.PI; } set { double len = Length; X = len * Math.Cos(value); Y = len * Math.Sin(value); } }