Files
MinFt/Client/Assets/Plugins/DynamicBone/Scripts/DynamicBonePlaneCollider.cs
Liubing\LB 3d8d4d18f3 first commit
先修复一下,错误的场景

删除不必要的钓场资产

修复into场景

update:更新meta文件,修复报错

update:修复资源

修复第一章节建造

修复建造第三章

update:删除多余内容

update:更新README.md

update:还原图标

update:更新README

update:更新配置
2026-04-28 02:17:22 +08:00

95 lines
2.1 KiB
C#

using UnityEngine;
[AddComponentMenu("Dynamic Bone/Dynamic Bone Plane Collider")]
public class DynamicBonePlaneCollider : DynamicBoneColliderBase
{
// prepare data
Plane m_Plane;
void OnValidate()
{
}
public override void Prepare()
{
Vector3 normal = Vector3.up;
switch (m_Direction)
{
case Direction.X:
normal = transform.right;
break;
case Direction.Y:
normal = transform.up;
break;
case Direction.Z:
normal = transform.forward;
break;
}
Vector3 p = transform.TransformPoint(m_Center);
m_Plane.SetNormalAndPosition(normal, p);
}
public override bool Collide(ref Vector3 particlePosition, float particleRadius)
{
float d = m_Plane.GetDistanceToPoint(particlePosition);
if (m_Bound == Bound.Outside)
{
if (d < 0)
{
particlePosition -= m_Plane.normal * d;
return true;
}
}
else
{
if (d > 0)
{
particlePosition -= m_Plane.normal * d;
return true;
}
}
/* // consider particleRadius
if (m_Bound == Bound.Outside)
{
if (d < particleRadius)
{
particlePosition += m_Plane.normal * (particleRadius - d);
return true;
}
}
else
{
if (d > -particleRadius)
{
particlePosition -= m_Plane.normal * (particleRadius + d);
return true;
}
}
*/
return false;
}
void OnDrawGizmosSelected()
{
if (!enabled)
return;
Prepare();
if (m_Bound == Bound.Outside)
{
Gizmos.color = Color.yellow;
}
else
{
Gizmos.color = Color.magenta;
}
Vector3 p = transform.TransformPoint(m_Center);
Gizmos.DrawLine(p, p + m_Plane.normal);
}
}