RaycastHit
射线
//
// 摘要:
// Structure used to get information back from a raycast.
// 用于从光线投射中获取信息的结构。
[NativeHeader("PhysicsScriptingClasses.h")]
[NativeHeader("Runtime/Interfaces/IRaycast.h")]
[NativeHeader("Runtime/Dynamics/RaycastHit.h")]
[UsedByNativeCode]
public struct RaycastHit
{
//
// 摘要:
// The Collider that was hit.
// 命中的 Collider。
public Collider collider { get; }
//
// 摘要:
// The impact point in world space where the ray hit the collider.
// 世界空间中射线命中碰撞体的撞击点。
public Vector3 point { get; set; }
//
// 摘要:
// The normal of the surface the ray hit.
// 射线命中的表面的法线。
public Vector3 normal { get; set; }
//
// 摘要:
// The barycentric coordinate of the triangle we hit.
// 命中的三角形的重心坐标。
public Vector3 barycentricCoordinate { get; set; }
//
// 摘要:
// The distance from the ray's origin to the impact point.
// 从射线原点到撞击点的距离。
public float distance { get; set; }
//
// 摘要:
// The index of the triangle that was hit.
// 命中的三角形的索引。
public int triangleIndex { get; }
//
// 摘要:
// The uv texture coordinate at the collision location.
// 碰撞位置处的 UV 纹理坐标。
public Vector2 textureCoord { get; }
//
// 摘要:
// The secondary uv texture coordinate at the impact point.
// 撞击点处的辅助 UV 纹理坐标。
public Vector2 textureCoord2 { get; }
[Obsolete("Use textureCoord2 instead. (UnityUpgradable) -> textureCoord2")]
public Vector2 textureCoord1 { get; }
//
// 摘要:
// The Transform of the rigidbody or collider that was hit.
// 命中的刚体或碰撞体的 Transform。
public Transform transform { get; }
//
// 摘要:
// The Rigidbody of the collider that was hit. If the collider is not attached to
// a rigidbody then it is null.
// 命中的碰撞体的 Rigidbody。如果该碰撞体未附加到刚体,则值为 /null/。
public Rigidbody rigidbody { get; }
//
// 摘要:
// The uv lightmap coordinate at the impact point.
// 撞击点处的 UV 光照贴图坐标。
public Vector2 lightmapCoord { get; }
}
hit.normal:The normal of the surface the ray hit.
物品掉落到头上弹开:
RaycastHit hit; string temp;
/// <summary>
/// 判断物体砸落到哪个面
/// </summary>
void JudgePoint()
{
Vector3 downss = MediaCtrl.OBJS["SM_NvHai_PZ"].transform.position -transform.position;
//print(downss);
if (Physics.Raycast(transform.position, downss, out hit, 1000f))
{
temp = Vector3.Dot(hit.normal, Vector3.forward) > 0 ? temp = "左" : temp = "右";
}
}
左右滑动,躲避高空坠物