Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

[unity]ورشة عمل **لعبة سونيك**

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • #61
    لم افهم شي من مما تقوله
    هو ان سونيك لا يصدم بأي شيء !!! فعند ظهور نتوء في الأرض يسقط كما في الفيديو
    طبعا انا الكود اللي استعملته لتحريك الشخصية هو transform.Translate
    لآسباب عديدة واهمها انه يمكنني ان اجعل الشخصية تلتف وتمشي عند الضغط على حرف S او السهم الأسفل بدلا من ان ترجع للوراء

    حاولت ان اعيدها للطريقة الأصلية وفعلا اصبحت تصتدم لكن هذا كان على حساب كل شيء
    المفروض التحريك الشخصية عن طريقة الكركتركنترول
    ممكن تضع لنا كود الحركة ؟؟
    اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
    وتفتك باعدائك اعداء الدين


    تعليق


    • #62
      كود:
      if(v > 0)
      		{
      		     transform.Translate(Vector3.forward * speed * Time.deltaTime * v);
      			_isIdle = false;
      			_isWalking = true;
      		}else{
      			if(v == 0)
      			{
      				_isIdle = true;
      			}
      			if(v < 0)
      			{	
      				_isIdle = false;
      				_isWalking = true;	
      				if(Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow))	
      				{	
      					transform.Rotate(0, 180, 0);
      				}	
      				transform.Translate(Vector3.back * speed * Time.deltaTime * v);
      			}
      	
      		
      		}

      الكود طويل لكن هذا الجزء المسؤول عن الحركة
      UDK-Team

      UNREAL ENGINE 4

      تعليق


      • #63
        اه صحيح
        هذا هو تفسير v و h الموجودين في السكربت

        كود:
        var h = Input.GetAxisRaw("Horizontal");
        		var v = Input.GetAxisRaw("Vertical");
        UDK-Team

        UNREAL ENGINE 4

        تعليق


        • #64
          لا حول ولا قوة الا بالله

          اتوقع ان v هو متغير قيمة اماااا Input.GetAxis("Horizontal او Input.GetAxis("Vertical لا استطيع التحديد ايهما فهل ضني صحيح ؟

          انت عافس الدنيا فووق تحت بس جوابني على سؤالي
          اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
          وتفتك باعدائك اعداء الدين


          تعليق


          • #65
            انت يبيلك جراح مع جزار مع معلم شورما يالله يقدرون يصلحوون الي قاعد تسويه


            ضع لي اسم القيم اوبجكت لسونك

            وضع لي اسم الانيميشن للكل الوقوف والجري والقفز كل شي ضع اسمه

            وساكتب لك كود تضعة في اي مكاان حتىى لو لصقة بالاضائه سيعمل
            اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
            وتفتك باعدائك اعداء الدين


            تعليق


            • #66
              عمل رآئع
              لكن ينقص مشروعك
              " التعاون "
              فلو تتعاون أنت مع بعض الأعضاء
              لأجتزت بعض من المشاكل
              التي تواجهك

              تعليق


              • #67
                المشاركة الأصلية بواسطة لا اعلم مشاهدة المشاركة
                انت يبيلك جراح مع جزار مع معلم شورما يالله يقدرون يصلحوون الي قاعد تسويه


                ضع لي اسم القيم اوبجكت لسونك

                وضع لي اسم الانيميشن للكل الوقوف والجري والقفز كل شي ضع اسمه

                وساكتب لك كود تضعة في اي مكاان حتىى لو لصقة بالاضائه سيعمل
                ههههههههههههههههه

                شكرا لك

                بس انا لدي 12 انيميشن اعتقد من الطبيعي يكون معقد

                بس شكرا انا انتهيت من كل الحركة بقي لدي مشكلة الكولجن وانا اعتقد انني سأحلها
                لآني وانا اكتب الكومنت خطر ببالي الحل
                UDK-Team

                UNREAL ENGINE 4

                تعليق


                • #68
                  المشاركة الأصلية بواسطة rashed506 مشاهدة المشاركة
                  عمل رآئع
                  لكن ينقص مشروعك
                  " التعاون "
                  فلو تتعاون أنت مع بعض الأعضاء
                  لأجتزت بعض من المشاكل
                  التي تواجهك
                  صحيح لكن الهدف من المشروع التعلم

                  وانا اتعلم من هذه المشاكل
                  UDK-Team

                  UNREAL ENGINE 4

                  تعليق


                  • #69
                    12 انيميشن عدد كبير ولم اللمح من مشهد اليوتيوب الا حركة التالي ( القفز- الجري - المشي لست متأكد - السقوط للاسفل - الدوران - الاستدارة باتجاه اليمين - الاستداره باتجاه اليسار - الوقوف )

                    عموما استغرب التحريك عن طريقة الترانسفير وليس عن طريق الكركتر كنترولر

                    ياليت تضع لنا الكود بالكامل للتحريك وليس مقتطع

                    ونصيحة لكي تتعلم يجب ان تبني السكربات على طريقة صحيحه وليس حلول مؤقته
                    اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                    وتفتك باعدائك اعداء الدين


                    تعليق


                    • #70
                      غيرته للكراكتر كونترولر لآني لم اجد حل لمشكلة الكولجن
                      الأنيميشن سأقسمهم لقسمين
                      المستخدمة حتى الآن (مشي , ركض , ركض سريع , وقوف , توقف*جديدة* , دوران , لف لليمين , لف لليسار , هبوط)
                      لم استخدمها بعد ( الإصابة , هبوط للأعلى , طيران )

                      ها هو الكود بالكامل

                      كود:
                      using UnityEngine;
                      using System.Collections;
                      
                      public class Sonic : MonoBehaviour
                      {
                      	public int speed = 6;
                      	public int rotSpeed = 4;
                      	private float gravity = 20;
                      	private int jumpSpeed = 10;
                      	private float tJumpingPoint;
                      	public bool movingBack = true;
                      	private bool movingRight;
                      	public bool moveBackward = false;
                      	private float runTimer = 0.8f;
                      	private float speedRunTimer = 1.5f;
                      	private bool isRunning = false;
                      	private bool isRunningFast = false;
                      	public bool isWalking = true;
                      	public bool canJump = true;
                      	private Vector3 moveDirection = Vector3.zero;
                      	public bool stopping = false;
                      	private float stopTimer = 0.66f;
                      
                      	//Character State
                      	public bool _isWalking = false;
                      	public bool _isRolling = false;
                      	public bool _isIdle = true;
                      	public bool _isJumping = false;
                      
                      	// Use this for initialization
                      	void Start ()
                      	{
                      		
                      		
                      	}
                      
                      	// Update is called once per frame
                      	void Update ()
                      	{
                      		CharacterController controller = GetComponent<CharacterController> ();
                      		float y_up_or_down = controller.velocity.y;
                      		
                      		if (controller.isGrounded == false) {
                      			canJump = false;
                      			_isJumping = true;
                      			_isWalking = false;
                      			_isIdle = false;
                      			_isRolling = false;
                      		} else {
                      			GameObject.Find ("Root").SendMessage ("BackToOriginRot");
                      			canJump = true;
                      			_isJumping = false;
                      		}
                      		if (canJump == true) {
                      			if (Input.GetButton ("Jump") || Input.GetKey (KeyCode.Joystick1Button3)) {
                      				gravity = 50;
                      				moveDirection.y = jumpSpeed;
                      			} else {
                      				gravity = 20;
                      			}
                      		}
                      		
                      		moveDirection.y -= gravity / 6 * Time.deltaTime;
                      		controller.Move (moveDirection * Time.deltaTime);
                      		
                      		var h = Input.GetAxisRaw ("Horizontal");
                      		var v = Input.GetAxisRaw ("Vertical");
                      		Debug.Log (stopTimer);
                      		if (_isIdle == true) {
                      			
                      			if (stopping == true) {
                      				
                      				if (stopTimer > 0.0f) {
                      					stopTimer -= Time.deltaTime;
                      					animation.CrossFade ("Stop", 0.1f);
                      				}
                      				if (stopTimer < 0.0f) {
                      					stopping = false;
                      					isWalking = true;
                      					isRunningFast = false;
                      				}
                      				
                      			} else {
                      				if (h > 0) {
                      					animation.CrossFade ("turnRight", 0.05f);
                      				}
                      				if (h < 0) {
                      					animation.CrossFade ("turnLeft", 0.05f);
                      				}
                      				if (h == 0) {
                      					animation.Play ("idle");
                      				}
                      				isWalking = true;
                      				isRunning = false;
                      				isRunningFast = false;
                      				speed = 4;
                      			}
                      			
                      			_isJumping = false;
                      			_isRolling = false;
                      			_isWalking = false;
                      		}
                      		if (_isJumping == true) {
                      			if (y_up_or_down < -2) {
                      				animation.CrossFade ("fallDown", 0.03f);
                      				GameObject.Find ("Root").SendMessage ("BackToOriginRot");
                      				
                      				
                      			} else {
                      				if (controller.isGrounded == false) {
                      					GameObject.Find ("Root").SendMessage ("RotateCenter");
                      					animation.CrossFade ("roll", 0.02f);
                      				}
                      			}
                      			
                      			_isIdle = false;
                      			_isRolling = false;
                      			_isWalking = false;
                      		}
                      		if (_isRolling == true) {
                      			_isJumping = false;
                      			_isIdle = false;
                      			_isWalking = false;
                      		}
                      		if (_isWalking == true) {
                      			
                      			if (Input.GetKeyUp (KeyCode.W) || Input.GetKeyUp (KeyCode.UpArrow) || Input.GetKeyUp (KeyCode.S) || Input.GetKeyUp (KeyCode.DownArrow)) {
                      				if (isRunningFast == true) {
                      					stopping = true;
                      					stopTimer = 0.66f;
                      				}
                      				
                      				
                      			} else {
                      				
                      				if (isWalking == true) {
                      					speed = 5;
                      					animation.CrossFade ("walk", 0.1f);
                      					if (runTimer > 0.0f) {
                      						runTimer -= Time.deltaTime;
                      					}
                      					if (runTimer < 0.0f) {
                      						isWalking = false;
                      						isRunning = true;
                      					}
                      				}
                      				
                      				if (isRunning == true) {
                      					if (speedRunTimer > 0.0f) {
                      						speedRunTimer -= Time.deltaTime;
                      					}
                      					if (speedRunTimer < 0.0f) {
                      						isRunning = false;
                      						isRunningFast = true;
                      					}
                      					speed = 18;
                      					isWalking = false;
                      					animation.CrossFade ("run", 0.2f);
                      					runTimer = 0.8f;
                      				} else {
                      					if (isRunningFast == false) {
                      						isWalking = true;
                      					}
                      				}
                      				if (isRunningFast == true) {
                      					speed = 25;
                      					speedRunTimer = 1.5f;
                      					animation.CrossFade ("runfast", 0.1f);
                      				} else {
                      					if (isRunning == false) {
                      						isWalking = true;
                      					}
                      				}
                      			}
                      			
                      			
                      			_isJumping = false;
                      			_isRolling = false;
                      			_isIdle = false;
                      		}
                      		
                      		transform.Rotate (0, h * rotSpeed, 0);
                      		
                      		if (v > 0) {
                      			var forward = transform.TransformDirection (Vector3.forward);
                      			var curSpeed = speed * v;
                      			controller.SimpleMove (forward * curSpeed);
                      			jumpSpeed = 20;
                      			_isIdle = false;
                      			_isWalking = true;
                      		} else {
                      			jumpSpeed = 10;
                      			if (v == 0) {
                      				_isIdle = true;
                      			}
                      			if (v < 0) {
                      				_isIdle = false;
                      				_isWalking = true;
                      			}
                      			
                      			
                      		}
                      		
                      	}
                      }
                      كما ترى استخدم السي شارب

                      لكن الشيء الوحيد الغير مشروح في السكربت هو SendMessage وهي فقط لتفعيل الدوران اثناء القفز من قبل سكربت ثاني قصير اعتقد هذا لا يهم
                      السكربت معقد وفيه اشياء غير مستخدمة بعد لكن سوف استخدمه قريبا





                      وانتهيت من السكربت تقريبا الآن فيه بعض العلة لكن ما زال جيد
                      UDK-Team

                      UNREAL ENGINE 4

                      تعليق


                      • #71
                        لكن للأسف الآن ظهرت لدي مشكلة اخرى وهي ان اللاعب عندما يمشي لمنطقة منخفضة لا يتفعل انيميشن المشي وكأنه في حالة القفز

                        سوف احاول حلها غدا واعتقد هذه بسبب اني غلقت الروتيشن الأكس والزد للشخصية في حالة الوقوف على الأرض كي لا تحدث مشاكل بسبب القفز (الدوران عند القفز)
                        UDK-Team

                        UNREAL ENGINE 4

                        تعليق


                        • #72
                          بعد قرائة الكود استنتج التالي هل كلامي صحيح ؟؟

                          انيميشن الوقوف Stop
                          انيميشن السقوط fallDown
                          انيميشن الدوران roll
                          انيميشن المشي walk
                          انيميشن الركض run
                          انيميشن الركض السريع runfast
                          انيميشن الدوران turnRight
                          انيميشن الدوران turnLeft

                          انا افتر راااسي مع هالسكربت بعد ما قراته اكتشفت ان التحريك كله في هذا الكود

                          كود:
                          	if (v > 0) {
                          			var forward = transform.TransformDirection (Vector3.forward);
                          			var curSpeed = speed * v;
                          			controller.SimpleMove (forward * curSpeed);
                          			jumpSpeed = 20;
                          			_isIdle = false;
                          			_isWalking = true;
                          		} else {
                          			jumpSpeed = 10;
                          			if (v == 0) {
                          				_isIdle = true;
                          			}
                          			if (v < 0) {
                          				_isIdle = false;
                          				_isWalking = true;
                          			}
                          			
                          			
                          		}
                          يحث يتم تفعيل walk عندما v اكبر او اصغر من صفر

                          وبعد تفعيل walk ايعمل عداد زمني يحسب الزمن ثم يفعل run وبعد عداد زمني يحب الزمن يفعل runfast


                          ثم
                          انيميشن الوقوف Stop لا يتم تفعيلة الا عندما يكون سونك يجري بسرعة قصوى وهي runfast
                          وعندها يكون stopTimer اكبر من الصفر فيتفعل انيميش Stop
                          ثم يتناقص stopTimer الي ان يصبح اصغر من الصفر فيفعل انيميشن الركض run ويتوقف تفعيل انيميش Stop وكذلك isRunningFast


                          والله ما ادري شقوول لك الله يعينك على هذا السكربت سيكون اصلاحة والتعديل عليه عملية شاقة
                          اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                          وتفتك باعدائك اعداء الدين


                          تعليق


                          • #73
                            المشاركة الأصلية بواسطة maya.help مشاهدة المشاركة
                            لكن للأسف الآن ظهرت لدي مشكلة اخرى وهي ان اللاعب عندما يمشي لمنطقة منخفضة لا يتفعل انيميشن المشي وكأنه في حالة القفز

                            سوف احاول حلها غدا واعتقد هذه بسبب اني غلقت الروتيشن الأكس والزد للشخصية في حالة الوقوف على الأرض كي لا تحدث مشاكل بسبب القفز (الدوران عند القفز)

                            انظر لهذا السكربت اللذي كتبته انت

                            كود:
                            			if (y_up_or_down < -2) {
                            				animation.CrossFade ("fallDown", 0.03f);
                            				GameObject.Find ("Root"....SendMessage ("BackToOriginRot"...;
                            				
                            				
                            			} else {
                            				if (controller.isGrounded == false) {
                            					GameObject.Find ("Root"....SendMessage ("RotateCenter"...;
                            					animation.CrossFade ("roll", 0.02f);
                            				}
                            			}
                            ساعدل علية وانشاله تنحل هالمشكلة القفز عند المنحدر
                            كود:
                            	if (y_up_or_down < -2) {
                            
                            				animation.CrossFade ("fallDown", 0.03f);
                            
                            				GameObject.Find ("Root"....SendMessage ("BackToOriginRot"...;
                            
                            				
                            
                            				
                            
                            			} else {
                            
                            				if (controller.isGrounded == false && y_up_or_down > 1) {
                            
                            					GameObject.Find ("Root"....SendMessage ("RotateCenter"...;
                            
                            					animation.CrossFade ("roll", 0.02f);
                            
                            				}
                            
                            			}
                            وضعت لك القيمة 1 انت شوف الي يناسبك قللها او زيدها الى ان تصبح مناسبة لك
                            واعتقد انه يجب ان تقللها الي 0.5 المهم انت شوف وجربها

                            وانشاله تنحل مشكلتك
                            اللهم اني اسألك باسمك الاعظم اللذي اذا دعيت به اجبت ان تنصر المسلمين وجندك على الظالمين
                            وتفتك باعدائك اعداء الدين


                            تعليق


                            • #74
                              المشاركة الأصلية بواسطة لا اعلم مشاهدة المشاركة
                              بعد قرائة الكود استنتج التالي هل كلامي صحيح ؟؟

                              انيميشن الوقوف Stop
                              انيميشن السقوط fallDown
                              انيميشن الدوران roll
                              انيميشن المشي walk
                              انيميشن الركض run
                              انيميشن الركض السريع runfast
                              انيميشن الدوران turnRight
                              انيميشن الدوران turnLeft

                              انا افتر راااسي مع هالسكربت بعد ما قراته اكتشفت ان التحريك كله في هذا الكود

                              كود:
                              	if (v > 0) {
                              			var forward = transform.TransformDirection (Vector3.forward);
                              			var curSpeed = speed * v;
                              			controller.SimpleMove (forward * curSpeed);
                              			jumpSpeed = 20;
                              			_isIdle = false;
                              			_isWalking = true;
                              		} else {
                              			jumpSpeed = 10;
                              			if (v == 0) {
                              				_isIdle = true;
                              			}
                              			if (v < 0) {
                              				_isIdle = false;
                              				_isWalking = true;
                              			}
                              			
                              			
                              		}
                              يحث يتم تفعيل walk عندما v اكبر او اصغر من صفر

                              وبعد تفعيل walk ايعمل عداد زمني يحسب الزمن ثم يفعل run وبعد عداد زمني يحب الزمن يفعل runfast


                              ثم
                              انيميشن الوقوف Stop لا يتم تفعيلة الا عندما يكون سونك يجري بسرعة قصوى وهي runfast
                              وعندها يكون stopTimer اكبر من الصفر فيتفعل انيميش Stop
                              ثم يتناقص stopTimer الي ان يصبح اصغر من الصفر فيفعل انيميشن الركض run ويتوقف تفعيل انيميش Stop وكذلك isRunningFast


                              والله ما ادري شقوول لك الله يعينك على هذا السكربت سيكون اصلاحة والتعديل عليه عملية شاقة
                              كلامك مضبوط 100%


                              الكود اللي كتبه الأخ هداه الله

                              يوجد الكثير الكثير من الاخطاء وخصوصاً انه مستعمل السكريبت عدة مرات في اماكن متفرقة

                              ههههههههههههههه

                              تعليق


                              • #75
                                بالمناسبة لماذا لم تستخدم لغة الجافا سكريبت


                                يكون أسهل الك وادق تفصيلا

                                تعليق

                                يعمل...
                                X