版本:Unity 6 (6000.0)
语言英语
  • C#

MonoBehaviour.OnControllerColliderHit(ControllerColliderHit)

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读来自用户的每一个建议更改,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请 <a>重试</a> 几分钟后。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

描述

当控制器在执行移动时碰到碰撞体时,会调用 OnControllerColliderHit。

这可以用于在角色与物体碰撞时推动物体。

// This script pushes all rigidbodies that the character touches

using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour { public float pushPower = 2.0F;

void OnControllerColliderHit(ControllerColliderHit hit) { Rigidbody body = hit.collider.attachedRigidbody;

// no rigidbody if (body == null || body.isKinematic) return;

// We dont want to push objects below us if (hit.moveDirection.y < -0.3f) return;

// Calculate push direction from move direction, // we only push objects to the sides never up and down Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);

// If you know how fast your character is trying to move, // then you can also multiply the push velocity by that.

// Apply the push body.velocity = pushDir * pushPower; } }