64 lines
1.5 KiB
C#
64 lines
1.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.XR;
|
|
|
|
using XericLibrary.Runtime.Type;
|
|
|
|
namespace XericLibrary.Runtime.CollisionLOD
|
|
{
|
|
/// <summary>
|
|
/// 盒体的AABB碰撞器
|
|
/// </summary>
|
|
public class LodBoxCollider : LodColliderBase
|
|
{
|
|
#region 字段属性
|
|
|
|
#endregion
|
|
|
|
#region 生命周期
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region 碰撞检测
|
|
|
|
private static bool CheckCollision(LodBoxCollider box1, LodBoxCollider box2)
|
|
{
|
|
var box1max = box1.BoundSize.max;
|
|
var box1min = box1.BoundSize.min;
|
|
var box2max = box2.BoundSize.max;
|
|
var box2min = box2.BoundSize.min;
|
|
|
|
bool collidX = box1max.x >= box2min.x
|
|
&& box2max.x >= box1min.x;
|
|
bool collidY = box1max.y >= box2min.y
|
|
&& box2max.y >= box1min.y;
|
|
bool collidZ = box1max.z >= box2min.z
|
|
&& box2max.z >= box1min.z;
|
|
|
|
bool enableCollidX = box1.EnableCollisionAxis.x
|
|
&& box2.EnableCollisionAxis.x;
|
|
bool enableCollidY = box1.EnableCollisionAxis.y
|
|
&& box2.EnableCollisionAxis.y;
|
|
bool enableCollidZ = box1.EnableCollisionAxis.z
|
|
&& box2.EnableCollisionAxis.z;
|
|
|
|
if(!(enableCollidX && enableCollidY && enableCollidZ))
|
|
return false;
|
|
|
|
bool rescollidX = enableCollidX && collidX
|
|
|| (!enableCollidX && (collidY || collidZ));
|
|
bool rescollidY = enableCollidY && collidY
|
|
|| (!enableCollidY && (collidX || collidZ));
|
|
bool rescollidZ = enableCollidZ && collidZ
|
|
|| (!enableCollidZ && (collidX || collidY));
|
|
|
|
return rescollidX && rescollidY && rescollidZ;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|