Bộ điều khiển nhân vật Cách thêm khả năng đẩy các vật cứng trong Unity
Trong hướng dẫn này, chúng tôi sẽ cải tiến tập lệnh Unity FPS Controller để cho phép nhân vật đẩy các vật cứng trong cảnh (tập lệnh bên dưới sẽ hoạt động với bất kỳ bộ điều khiển nào, miễn là nó có gắn Thành phần CharacterController). Tập lệnh này có thể mang lại cảm giác chân thực hơn cho trò chơi của bạn bằng cách cho phép người chơi tương tác với các vật thể và môi trường động.
Bước 1: Tạo tập lệnh mới
- Tạo tập lệnh C# mới trong dự án Unity của bạn. Bạn có thể đặt tên nó là "CharacterPushController".
Bước 2: Sao chép tập lệnh được cung cấp
- Sao chép mã bên dưới vào tập lệnh mới được tạo. Bạn có thể điều chỉnh biến 'pushPower' để kiểm soát cường độ đẩy. Ngoài ra, bạn có thể muốn tùy chỉnh các điều kiện để áp dụng lực đẩy dựa trên logic của trò chơi.
CharacterPushController.cs
using UnityEngine;
public class CharacterPushController : MonoBehaviour
{
// Adjust this variable to control the strength of the push
public float pushPower = 2.0f;
void OnControllerColliderHit(ControllerColliderHit hit)
{
Rigidbody body = hit.collider.attachedRigidbody;
// No rigidbody or kinematic rigidbody
if (body == null || body.isKinematic)
{
return;
}
// Avoid pushing objects below the character
if (hit.moveDirection.y < -0.3)
{
return;
}
// Calculate push direction from move direction,
// pushing only to the sides, not up and down
Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
// Apply the push
body.velocity = pushDir * pushPower;
}
}
Bước 3: Đính kèm tập lệnh
- Đính kèm tập lệnh "CharacterPushController" vào GameObject với thành phần CharacterController.
Bước 4: Kiểm tra
- Chơi cảnh và kiểm tra khả năng đẩy vật thể cứng của bộ điều khiển nhân vật với sự trợ giúp của tập lệnh mới tạo.
Bước 5: Điều chỉnh
- Điều chỉnh the 'pushPower' để đạt được hành vi mong muốn trong trò chơi của bạn.