我有以下代码可以更新粒子的速度:
effect.vel = new Vector3Int((sbyte)Randy() / 4,
(sbyte)Randy() / 4,
(sbyte)Randy() / 4);
Randy()
返回随机 16 位有符号整数。
对
sbyte
的转换确实是有目的的;移除后,粒子速度会更大。
但据我了解,转换也会以某种方式“随机化”该值,因为它会截断它。
你能建议一种不那么令人困惑的方法(不涉及演员表),但仍然会产生同样的结果吗?
首先请说明下次是C#。
接下来,
Convert.ToSByte(number)
还会将您的数字转换为 sbyte,但使用强制转换更好,但您不喜欢这样做。
但是,问题是您正在创建一个 16 位整数并将其转换为 8 位整数。你正在将内存减半。这就是为什么它是“随机化”的。
我不确定你的目标是什么,但如果你只是想要一个较小的数字,请尝试对其进行数学计算。例如,如果您想截断一半数字,则只需执行以下操作:
short example = 1234;
example = (short)(example/100);
Console.WriteLine(example);
将随机 1234 转换为 12。