Unity开发中直接使用Rigidbody.velocity属性来获取刚体的当前速度,
注意:Rigidbody.velocity 的陷阱,参考链接:【Unity】Rigidbody.velocity 的陷阱_美式咖啡的博客-CSDN博客_unity velocity
具体工具代码:
public static class VectorHelper
{
/// <summary>
/// 计算平均位置
/// </summary>
public static Vector3 FindAveragePosition<TComponent>(TComponent[] components) where TComponent : Component
{
Vector3 output = Vector3.zero;
foreach (TComponent component in components)
{
if (component == null)
{
continue;
}
output += component.transform.position;
}
return output / components.Length;
}
/// <summary>
/// 计算平均速度
/// </summary>
public static Vector3 FindAverageVelocity<TComponent>(TComponent[] components) where TComponent : Component
{
Vector3 output = Vector3.zero;
foreach (TComponent component in components)
{
if (component == null)
{
continue;
}
var rigidbody = component.GetComponent<Rigidbody>();
if (rigidbody == null)
{
continue;
}
output += rigidbody.velocity;
}
return output / components.Length;
}
/// <summary>
/// 计算平均位置
/// </summary>
public static Vector3 FindAveragePosition<TComponent>(List<TComponent> components) where TComponent : Component
{
Vector3 output = Vector3.zero;
foreach (TComponent component in components)
{
if (component == null)
{
continue;
}
output += component.transform.position;
}
return output / components.Count;
}
/// <summary>
/// 计算平均速度
/// </summary>
public static Vector3 FindAverageVelocity<TComponent>(List<TComponent> components) where TComponent : Component
{
Vector3 output = Vector3.zero;
foreach (TComponent component in components)
{
if (component == null)
{
continue;
}
var rigidbody = component.GetComponent<Rigidbody>();
if (rigidbody == null)
{
continue;
}
output += rigidbody.velocity;
}
return output / components.Count;
}