unity 如何让人物落到平面上不穿透地面
要让人物落到平面上不穿透地面,可以使用 Unity 的碰撞检测系统。以下是具体步骤:
-
在场景中创建一个平面对象,并将其添加一个 Box Collider 组件。
-
在角色对象上添加一个 Rigidbody 组件和一个 Capsule Collider 组件。将 Capsule Collider 组件的 Is Trigger 属性设置为False。
-
在角色的脚部位置添加一个空物体,并将其命名为 GroundCheck。
-
在角色对象上添加一个脚本,并在脚本中编写以下代码:
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float moveSpeed;
public float jumpForce;
public Transform groundCheck;
public LayerMask whatIsGround;
private Rigidbody rb;
private bool isGrounded;
void Start () {
rb = GetComponent<Rigidbody>();
}
void FixedUpdate () {
isGrounded = Physics.CheckSphere(groundCheck.position, 0.1f, whatIsGround);
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * moveSpeed);
if (Input.GetButtonDown("Jump") && isGrounded)
{
rb.AddForce(new Vector3(0, jumpForce, 0), ForceMode.Impulse);
}
}
}
- 在场景中选择角色对象,将 GroundCheck 对象拖放到对应的 Transform 变量中。
这样做后,当角色落到平面上时,由于角色的 Capsule Collider 组件和平面的 Box Collider 组件之间的碰撞检测,角色就不会穿透地面了。同时,通过 GroundCheck 对象的位置检测,角色也可以判断自己是否在地面上,从而决定是否可以跳跃
原文地址: https://www.cveoy.top/t/topic/ffYY 著作权归作者所有。请勿转载和采集!