Unity常用方法-- Collision碰撞检测

LayerMask

描述

指定要在 Physics.Raycast 中使用的层。

代码
[SerializeField] protected LayerMask whatIsGround;

Physics2D.Raycast

函数结构

public static RaycastHit2D Raycast 

(Vector2 origin,

 Vector2 direction,

float distance= Mathf.Infinity,

int layerMask= DefaultRaycastLayers,

float minDepth= -Mathf.Infinity, float maxDepth= Mathf.Infinity);

参数
origin 射线在 2D 空间中的起点。
direction 表示射线方向的矢量。
distance 射线的最大投射距离。
layerMask 过滤器,用于仅在特定层上检测碰撞体。
minDepth 仅包括 Z 坐标(深度)大于或等于该值的对象。
maxDepth 仅包括 Z 坐标(深度)小于或等于该值的对象。
代码
public virtual bool IsGroundDetected() => Physics2D.Raycast(groundCheck.position, Vector2.down, groundCheckDistance, whatIsGround);

Raycast函数返回的bool值代表了他是否接触地面。

groundCheck.position

groundCheck.position是通过transform定义的,在使用过程中,我们将在物体下方

创建新的子物体来代表GroundCheck

通过拖动至

的方式。

Gizmos.DrawLine

函数结构

public static void DrawLine (Vector3 from, Vector3 to);

描述

绘制一条从 from 开始到 to 的线。

代码
Gizmos.DrawLine(groundCheck.position, new Vector3(groundCheck.position.x, groundCheck.position.y - groundCheckDistance));

主要用于将RayCast的范围可视化Unity常用方法-- Collision碰撞检测_第1张图片如图中白线。

//---------------------------------------------//

注:本人也是萌新一个,边学边记,写下来主要是怕搞忘了。文章如有问题,还请多多包涵。

本文章在本人学完之后将会进一步进行优化,可能的话会以视频的形式进行讲解,如有需要可以先收藏。

文章参考资料:Unity自带的手册

Unity 脚本 API

你可能感兴趣的:(unity,游戏引擎)