升级obi

This commit is contained in:
2026-01-22 22:08:21 +08:00
parent 120b8cda26
commit 20f14322bc
1067 changed files with 149894 additions and 29583 deletions

View File

@@ -1,4 +1,5 @@
using UnityEngine;
using System;
using UnityEngine;
namespace Obi
{
@@ -19,16 +20,46 @@ namespace Obi
this.scale = scale;
}
public void FromTransform(Transform source, bool is2D = false)
public void FromTransform3D(Transform source, ObiRigidbody rb)
{
translation = source.position;
rotation = source.rotation;
scale = source.lossyScale;
if (is2D)
if (rb != null && rb.unityRigidbody != null)
{
translation[2] = 0;
translation = source.position - rb.unityRigidbody.transform.position + rb.position;
rotation = (source.rotation * Quaternion.Inverse(rb.unityRigidbody.transform.rotation)) * rb.rotation;
}
else
{
translation = source.position;
rotation = source.rotation;
}
scale = source.lossyScale;
}
public void FromTransform2D(Transform source, ObiRigidbody2D rb)
{
if (rb != null && rb.unityRigidbody != null)
{
translation = source.position - rb.unityRigidbody.transform.position + (Vector3)rb.position;
rotation = (source.rotation * Quaternion.Inverse(rb.unityRigidbody.transform.rotation)) * Quaternion.AngleAxis(rb.rotation, Vector3.forward);
}
else
{
translation = source.position;
rotation = source.rotation;
}
scale = source.lossyScale;
translation[2] = 0;
}
public AffineTransform Inverse()
{
var conj = Quaternion.Inverse(rotation);
var invScale = new Vector3(1 / scale.x, 1 / scale.y, 1 / scale.z);
return new AffineTransform(conj * Vector3.Scale(translation , -invScale),
conj,
invScale);
}
}
}