2-5. 物理环境监测及绘制
物理环境监测代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PhysicsCheck : MonoBehaviour
{
[Header("监测参数")]
public Vector2 bottomOffset;
public float checkRaduis;
public LayerMask groundLayer;
[Header("状态")]
public bool isGround;
void Update()
{
Check();
}
public void Check()
{
// 监测地面
isGround = Physics2D.OverlapCircle((Vector2)transform.position + bottomOffset, checkRaduis, groundLayer);
}
private void OnDrawGizmosSelected()
{
// 绘制监测区
Gizmos.DrawWireSphere((Vector2)transform.position + bottomOffset, checkRaduis);
}
}
然后在 Jump 方法中判断,只有在地面上才能跳跃
private void Jump(InputAction.CallbackContext context)
{
// Debug.Log("JUMP");
if (physicsCheck.isGround)
{
// 只有在地面上才能进行跳跃
// 这里使用的是 ForceMode2D.Impulse,表示瞬间修改人物上方向的速度为 jumpForce 对应的数值
rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
}
}
最终结果如下图所示