اذهب إلى المحتوى

Salem Ghanem

الأعضاء
  • المساهمات

    21
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Salem Ghanem

  1. بتاريخ 14 دقائق مضت قال ياسر مسكين:

    في هذه الحالة، يجب استخدام إدخالات مؤشر الفأرة لتغيير اتجاه اللاعب والكاميرا.

    
    using UnityEngine;
    using UnityEngine.InputSystem;
    
    public class PlayerMovement : MonoBehaviour
    {
        public float speed = 5f;
        private Vector2 movementInput;
        private Vector2 mouseInput;
        private Transform mainCameraTransform;
    
        void Start()
        {
            // الحصول على مكون التحويل للكاميرا الرئيسية
            mainCameraTransform = Camera.main.transform;
        }
    
        // استدعاء الإدخال لتحريك اللاعب
        private void OnMove(InputValue value)
        {
            movementInput = value.Get<Vector2>();
        }
    
        // استدعاء الإدخال لتحديث اتجاه الفأرة
        private void OnLook(InputValue value)
        {
            mouseInput = value.Get<Vector2>();
        }
    
        void FixedUpdate()
        {
            // حساب الحركة الجديدة بناءً على الإدخالات
            Vector3 movement = new Vector3(movementInput.x, 0f, movementInput.y) * speed * Time.fixedDeltaTime;
            // تحريك اللاعب
            transform.Translate(movement);
    
            // تحديث اتجاه الكاميرا بناءً على حركة المؤشر
            Vector3 rotatePlayer = new Vector3(0f, mouseInput.x, 0f) * Time.fixedDeltaTime * 100f;
            transform.Rotate(rotatePlayer);
    
            // تحديث اتجاه الكاميرا بناءً على حركة المؤشر الرأسي
            Vector3 rotateCamera = new Vector3(-mouseInput.y, 0f, 0f) * Time.fixedDeltaTime * 100f;
            mainCameraTransform.Rotate(rotateCamera);
        }
    }

    هنا تمت إضافة دالة جديدة `OnLook` للتعامل مع إدخالات حركة المؤشر بحيث تقوم هذه الدالة بتحديث قيمة `mouseInput` التي تستخدم لتحديث اتجاه اللاعب والكاميرا، هذا الكود يستخدم `Camera.main` للوصول إلى مكون التحويل الخاص بالكاميرا.

    ان اللاعب لا يتحرك وقيمة movement تساوي اصفار دائما

     

  2. بتاريخ 29 دقائق مضت قال ياسر مسكين:

     

    using UnityEngine;
    using UnityEngine.InputSystem;
    
    public class PlayerMovement : MonoBehaviour
    {
        // تعيين المتغيرات
        public float speed = 5f;
        private Vector2 movementInput;
    
        // استدعاء الإدخال
        private void OnMove(InputValue value)
        {
            movementInput = value.Get<Vector2>();
        }
    
        private void FixedUpdate()
        {
            // حساب الحركة الجديدة بناءً على الإدخال
            Vector3 movement = new Vector3(movementInput.x, 0f, movementInput.y) * speed * Time.fixedDeltaTime;
            // تحريك اللاعب
            transform.Translate(movement);
        }
    }

     

    احتاج اللاعب ان يتحرك بحيث تكون الكاميرا خلفه وان يغير اتجاهه عن طريق مؤشر الفارة 

  3. السلام عليكم, لقد واجهت مشاكل في كتابة اكواد لحركة اللاعب من  منظور الشخص الثالث بلغة سي شارب بعد ان جهزت الكاميرا عن طريق Cinemachine , فعندما احاول ايجاد بعض الاكواد من الانترنت يظهر خطأ في كلمة Input, كيف يمكنني استخدام نظام الادخال الجديد new input system لحل هذه المشكلة؟

×
×
  • أضف...