Vật thể có thể đẩy (Pushable Objects)
C# Code
using UnityEngine;
// Gắn script này vào Player
public class ObjectPusher : MonoBehaviour
{
public float pushForce = 5.0f;
// Hàm này được gọi khi CharacterController va chạm với một đối tượng khác
void OnControllerColliderHit(ControllerColliderHit hit)
{
Rigidbody body = hit.collider.attachedRigidbody;
// Kiểm tra xem đối tượng có Rigidbody hay không và nó không phải là kinematic
if (body == null || body.isKinematic)
{
return;
}
// Không đẩy các vật thể ở bên trên chúng ta
if (hit.moveDirection.y < -0.3f)
{
return;
}
// Tính toán hướng đẩy
Vector3 pushDirection = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
// Tác động lực lên Rigidbody của vật thể
body.velocity = pushDirection * pushForce;
}
}Cho phép người chơi đẩy các vật thể có Rigidbody khi di chuyển vào chúng. Lực đẩy có thể điều chỉnh được.