جربتة وما اشتغل جيدا
إعـــــــلان
تقليص
لا يوجد إعلان حتى الآن.
[Unity3D] للكبار فقط : القفزة البعيدة
تقليص
X
-
المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركةهل القفزة على شكل منحنى مثل المبين بالفيديو فى الردود الاولى ام ماذا ؟
تقريباً زي المنحنى
ولكن قم بزيادة المتغير للقفزة حتى تصبح ما تريد منحنى بزاوية مبلان 90 درجة
مع اللف الشخصية والدوران بالماوس 360 درجة
تعليق
-
المشاركة الأصلية بواسطة NTSoft مشاهدة المشاركةجربتة وما اشتغل جيدا
ولكن انتظر قليلاً او قم بتحريك الشخصية حتى تثبت جاذبية الشخصية على الأرض
لانها لها تأثير Raycast بحركة الماوس مع الجاذبية
بعد دقائق تثبت الشخصية على الأرض بفعل نقصان جاذبية raycast على الشخصية
في النهاية يتحرك بشكل طبيعي وبقفز بنقرة على الماوس في نقطة محددة تحددها انت
قم بتغير المتغير في القفزة حتى تصبح زاوية ميلان 90
تعليق
-
المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركةالمراحل امامك
ولكن انتظر قليلاً او قم بتحريك الشخصية حتى تثبت جاذبية الشخصية على الأرض
لانها لها تأثير Raycast بحركة الماوس مع الجاذبية
بعد دقائق تثبت الشخصية على الأرض بفعل نقصان جاذبية raycast على الشخصية
في النهاية يتحرك بشكل طبيعي وبقفز بنقرة على الماوس في نقطة محددة تحددها انت
قم بتغير المتغير في القفزة حتى تصبح زاوية ميلان 90
تعليق
-
المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركةالمراحل امامك
ولكن انتظر قليلاً او قم بتحريك الشخصية حتى تثبت جاذبية الشخصية على الأرض
لانها لها تأثير Raycast بحركة الماوس مع الجاذبية
بعد دقائق تثبت الشخصية على الأرض بفعل نقصان جاذبية raycast على الشخصية
في النهاية يتحرك بشكل طبيعي وبقفز بنقرة على الماوس في نقطة محددة تحددها انت
قم بتغير المتغير في القفزة حتى تصبح زاوية ميلان 90
المشاركة الأصلية بواسطة omarzonex مشاهدة المشاركةتقريباً زي المنحنى
ولكن قم بزيادة المتغير للقفزة حتى تصبح ما تريد منحنى بزاوية مبلان 90 درجة
مع اللف الشخصية والدوران بالماوس 360 درجةالمشاركة الأصلية بواسطة omarzonex مشاهدة المشاركةهذه معدلة مع الأضافة متغيرات للماوس للتصحيح القفزة بالماوس
يوجد فرق بين الكود الجاهز والمضافة كود اخر للقفزة بطريقة الخطأ العشوائي
قارن بينهما وستلاجظ الفرق
اخي عمر الوضع الا عشوائي في انتظار الدالة المتبعة في الكورة الممتدة المنبثقة من الا مركزيه
هذه هي الطريقة المتبعة في تحديد النقاط والتي سوف تجدها في كل مكان من احداثيات الموقع السالبه والموجبه
فالطريقة الصحيحة ان تستخدم التخمين في ارقام العشرية والكسريه ولتحديد منحى القفزه لتصبح مشابهه لقوس قزح
اجدها مثل الطائر اللذي لا يطير الا بجناحان وبالنهاية ستجد انك وصلت الي الطريقه الصحيحه المختومة والمتذبذبه
فقط قم بتعديل بعض الارقام واي ارقام لا اعرف ماهي ولكن جرب حظك
والسلام عليكم ورحمة الله وبركاتهاللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
وتفتك باعدائك اعداء الدين
تعليق
-
ضع مربع cube مع Rigidbody
وضع معه هذا السكربت
كود PHP:var power =450 ;
var okjump=true;
function Update ()
{
var forward : Vector3 = transform.TransformDirection(Vector3(0,1,1));
if(okjump==true)
{
rigidbody.AddForce (forward * power);
okjump=false;
}
}
الان ضع هذا السكربت بالكاميرا
كود PHP:var Distance : float;
var projectile : GameObject;
var cube : GameObject;
var okjumto = true;
var timetojump =1.0 ;
function Update()
{
if (Input.GetKeyDown("mouse 0"))
{
var hit:RaycastHit;
var ray :Ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, hit))
{
MousePoint = new Vector3(hit.point.x, 0, hit.point.z);
Instantiate(projectile, MousePoint, transform.rotation);
cube.transform.LookAt(Vector3(MousePoint.x,cube.transform.position.y,MousePoint.z));
if(okjumto==true)
{
jumto();
}
}
}
Distance = Vector3.Distance(MousePoint,cube.transform.position);
print(Distance);
}
function jumto()
{
okjumto=false;
yield WaitForSeconds(timetojump);
cube.GetComponent(NewBehaviourScript).okjump=true;
okjumto=true;
}
كود PHP:var projectile : GameObject;
var cube : GameObject;
والثاني ضع به New Prefab خالي من الكولايدر حتى تنظر الي مكان النقطة
المشكلة في تحديد قيمة قوة القذف rigidbody.AddForce تحتاج لمعرفة معادلة المقذوفات
علشان تتحكم بقوة القذف بناءا على المسافة
علما ان المسافة سيتم طباعتها بالكونسلت
او ان تجعل قوة القذف متغيره حسب المسافة
if المسافة اكبر من 5 قوة القذف كذااللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
وتفتك باعدائك اعداء الدين
تعليق
-
اهلا شباب
اسف على التاخير بس كان عندى مشاغل كتيرة ولسة ما خلصت
المهم الكود هذا الذى توصلت الية وسيفى بالغرض
كود:using UnityEngine; using System.Collections; [RequireComponent(typeof(CharacterController))] public class PlayerController : MonoBehaviour { private CharacterController characterController; public float Speed = 10; public float Distance; public float CurrentDistance; public Vector3 MousePoint = new Vector3(); public Vector3 Direction = new Vector3(); public GameObject ForPosition; public GameObject JumpCenter; public bool Jumping = false; public bool Walking = false; void Start() { JumpCenter = new GameObject("JumpCenter"); ForPosition = new GameObject("ForPosition"); ForPosition.transform.position = transform.position; characterController = GetComponent<CharacterController>(); } void Update() { if ((Input.GetKeyDown("mouse 0")) && !Jumping) { RaycastHit hit; Ray ray = Camera.mainCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { MousePoint = new Vector3(hit.point.x, hit.point.y, hit.point.z); transform.LookAt(new Vector3(MousePoint.x, transform.position.y, MousePoint.z)); Direction = Vector3.Normalize(MousePoint - transform.position); Distance = Vector3.Distance(transform.position, MousePoint); Ray jc = new Ray(transform.position, transform.forward); JumpCenter.transform.position = jc.GetPoint(Distance / 2); JumpCenter.transform.rotation = transform.rotation; } } CurrentDistance = Vector3.Distance(transform.position, MousePoint); if (CurrentDistance >= 1) { if ((Input.GetKey("left ctrl")) && !Jumping && !Walking) { Jumping = true; } if (Jumping && !Walking) { ForPosition.transform.RotateAround(JumpCenter.transform.position, JumpCenter.transform.right, 5); transform.position = ForPosition.transform.position; Debug.Log("Jumping"); } else if (!Jumping) { Walking = true; characterController.SimpleMove(Direction * Speed); ForPosition.transform.position = transform.position; Debug.Log("Walking"); } } else { Jumping = false; Walking = false; } Debug.DrawLine(transform.position, MousePoint, Color.blue); Debug.DrawLine(transform.position, JumpCenter.transform.position, Color.red); }
شكرا لكل الذى ساعد بالموضوع
تعليق
تعليق