Throwing Knife Added

This commit is contained in:
CortexCore
2023-10-25 17:26:42 +08:00
parent 3e39e627bc
commit c5f638d9d2
31 changed files with 2432 additions and 310 deletions

View File

@@ -0,0 +1,56 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Assertions;
namespace BITKit
{
public static class ConstraintExtensions
{
public static ParentConstraint SetParentConstraint(this Transform target, Transform parentSource,
ParentConstraint constraint = null)
{
Assert.IsTrue(!constraint || target == constraint.transform);
if (!constraint)
{
if (!parentSource) return null;
constraint = target.gameObject.AddComponent<ParentConstraint>();
}
// 清空已有约束
constraint.constraintActive = false;
for (int i = constraint.sourceCount - 1; i >= 0; i--)
{
constraint.RemoveSource(i);
}
// 无约束
if (!parentSource) return constraint;
// 设置新约束
constraint.AddSource(new ConstraintSource
{
sourceTransform = parentSource,
weight = 1,
});
// 设置 Position offset
var positionOffset = parentSource.InverseTransformPoint(target.position);
constraint.SetTranslationOffset(0, positionOffset);
// 设置 Rotation offset
var localForward = parentSource.InverseTransformDirection(target.forward);
var localUpward = parentSource.InverseTransformDirection(target.up);
var rotationOffset = Quaternion.LookRotation(localForward, localUpward).eulerAngles;
constraint.SetRotationOffset(0, rotationOffset);
// 激活约束
constraint.constraintActive = true;
return constraint;
}
}
}