وحدة التحكم في الشخصية كيفية إضافة القدرة على دفع الأجسام الصلبة في الوحدة

في هذا البرنامج التعليمي، سنقوم بتحسين البرنامج النصي Unity FPS Controller لتمكين الشخصية من دفع الأجسام الصلبة داخل المشهد (يجب أن يعمل البرنامج النصي أدناه مع أي وحدة تحكم، كما طالما أنه يحتوي على مكون CharacterController مرفق). يمكن أن يضيف هذا البرنامج النصي لمسة واقعية إلى لعبتك من خلال السماح للاعبين بالتفاعل مع الكائنات والبيئات الديناميكية.

الخطوة 1: إنشاء برنامج نصي جديد

  • قم بإنشاء نص C# جديد في مشروعك Unity. يمكنك تسميتها بشيء مثل "CharacterPushController".

الخطوة 2: انسخ البرنامج النصي المقدم

  • انسخ الكود أدناه في البرنامج النصي الذي تم إنشاؤه حديثًا. يمكنك ضبط المتغير 'pushPower' للتحكم في قوة الدفع. بالإضافة إلى ذلك، قد ترغب في تخصيص شروط تطبيق قوة الدفع بناءً على منطق لعبتك.

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;
    }
}

الخطوة 3: إرفاق البرنامج النصي

  • قم بإرفاق البرنامج النصي "CharacterPushController" إلى GameObject باستخدام المكون CharacterController.

الخطوة 4: الاختبار

  • قم بتشغيل المشهد واختبر قدرة وحدة التحكم في الشخصية على دفع الأجسام الصلبة بمساعدة البرنامج النصي الذي تم إنشاؤه حديثًا.

الخطوة 5: الضبط

  • اضبط 'pushPower' لتحقيق السلوك المطلوب في لعبتك.