1. 地面检测
1.1 地面检测的逻辑及代码
一般情况下,对于手人物进行事件处理或动作处理时,我们需要判定人物是否在地面上,这个时候最好的方式是设定地面碰撞器,只有角色在地面时才可以进行跳跃; 我们可以想象物体的重心向地面延伸一条射线,射线到里面的距离就是地面监测的距离,如果物体离地面的距离长于射线距离,则判定为不在地面,为了方便编写相应程序,我们将射线可视化出来。
private float groundCheckDistance;
private void OnDrawGizmos()
{
//程序编写中可视化
Gizmos.DrawLine(transform.position, new Vector3(transform.position.x,transform.position.y - groundCheckDistance));
//可以理解为根据提供的两个点,连成一条直线
}

可视化射线后我们了解物体中心点与地面之间的判定距离。
[SerialField] private LayerMask WhatisGround;
private bool isGrounded;
void Update()
{
isGrounded = Physics2D.Raycast(transform.position,Vector2.down,groundCheckDistance,WhatisGround);
}
上述代码显示我们如何判定人物与地面间的距离,isGrounded是一个布尔类型的参数,调用Physics2D中的Raycast方法,可以理解为射线检测方法。输入有四个参数,目标位置,


1万+

被折叠的 条评论
为什么被折叠?



