代码之家  ›  专栏  ›  技术社区  ›  i_sniff_ket

在unity之外使用unity类

  •  0
  • i_sniff_ket  · 技术社区  · 2 年前

    我喜欢unity的刚体变换函数,在与unity无关的C#应用程序中需要它们。我如何使用 Quaternion class 在团结之外?

    this 但我不确定它是否适用于我,因为我仍在使用C。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Luke Briggs    2 年前

    Unity的许多功能实际上是用C++编写的,并且在C#中作为内部调用公开。这是四元数。Slerp例如:

    
    [MethodImpl(MethodImplOptions.InternalCall)]
    private static extern void Slerp_Injected(ref Quaternion a, ref Quaternion b, float t, out Quaternion ret);
    
    [FreeFunction("QuaternionScripting::Slerp", IsThreadSafe = true)]
    public static Quaternion Slerp(Quaternion a, Quaternion b, float t)
    {
        Slerp_Injected(ref a, ref b, t, out var ret);
        return ret;
    }
    
    

    幸运的是,如果您想要的是与转换相关的功能,那么有一个内置的实现 Quaternion Vector3 System.Numerics C#的命名空间与Unity中的命名空间具有许多相同的功能,这可能会为您提供您想要的:

    using System.Numerics;
    
    
    var axis = Vector3.UnitX;
    var angle = 2f; // This is in radians
    Quaternion q = Quaternion.CreateFromAxisAngle(rotAxis, rotAngle);