سكربت تحريك عبر خاصية اللمس على شاشات الهواتف

من أكثر الألعاب الإلكترونية شهرة وانتشار هي الآن تلك الألعاب التي يتم إنتاجها أو نشرها خصيصا للهواتف المحمولة، فالهواتف هي مستقبل المنتظر، وهي من ستحل محل أجهزة الكمبيوتر في المستقبل القريب، بل أن كثير الأشخاص قد أعتمدوا على الهاتف المحمول في حياتهم كبديل لأجهزة الكمبيوتر، ونحن أيضا كمطوري ألعاب علينا أن نستعد لذلك ونطور من مهاراتنا في إنشاء وتطوير الألعاب التي تستهدف الهاتف المحمول.




وهنا وعبر هذا المقال سنعرض لكم سكربت بسيط لتحريك اللاعب عبر شاشة الهاتف عبر إستخدام أصابعنا، التي تعطي لللعبة الأوامر لتحريك اللاعب يمين ويسار وذلك حسب حركة لمس الأصابع للشاشة.

شرح الأكواد:

في البداية يتم تعريف عدد من المتغيرات العامة التي سوف يتم إستخدامها، وإدخال قيمتها لتكون مناسبة لعبة على حدى مثل متغير ''   moveSpeed  '' وهو ما سيعطي قيمة السرعة التي يتحرك بها اللاعب في لعبتنا.
وكذلك يتم تعريف متغير آخر من النوع ''  GameObject ''  وهو خاص بتحديد اللاعب الذي سوف يتم تحريكة داخل اللعبة ويرمز لهذا المتغير بالرمز '' character  ''.
وبعد تعريف المتغيرات العامة وهي التي من الممكن أن نعطي لها قيمة من خارج البرنامج، نقوم بتعريف المتغيرات الخاصة ''  private ''، حيث سنعرف متغيران الأول من النوع '' Rigidbody2D   '' وهو خاص بتعريف وحفظ الخصائص الفيزيائية لللاعب، ويرمز لهذا المتغير بالرمز ''  characterBody'' داخل الأكواد، والآخر من النوع ''  float '' وهو خاص بحفظ قيمة عشرية وهي مقاس شاشة العرض للهاتف وذلك حتى لا يخرج اللاعب من الشاشة ويصبح غير موجودة في اللعبة، وتم الرمز لهذا المتغير بالرمز '' ScreenWidth  ''.

وبعد ذلك في الدالة ''Start '' وهي التي تحمل أكواد وأوامر برمجية يتم تنفيذها مرة واحدة فقط عند بداية تشغيل اللعبة، فأننا سوف نقوم بإعطاء قيم للمتغيرات، حيث سنقوم بإعطاء قيمة للمتغير ''ScreenWidth  '' تساوي قيمة عرض شاشة الهاتف، وذلك عبر الأمر البرمجي''  ScreenWidth = Screen.width   ''. 






using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour {
	//variables
	public float moveSpeed = 300;
	public GameObject character;

	private Rigidbody2D characterBody;
	private float ScreenWidth;


	// Use this for initialization
	void Start () {
		ScreenWidth = Screen.width;
		characterBody = character.GetComponent<Rigidbody2D>();
	}
	
	// Update is called once per frame
	void Update () {
		int i = 0;
		//loop over every touch found
		while (i < Input.touchCount) {
			if (Input.GetTouch (i).position.x > ScreenWidth / 2) {
				//move right
				RunCharacter (1.0f);
			}
			if (Input.GetTouch (i).position.x < ScreenWidth / 2) {
				//move left
				RunCharacter (-1.0f);
			}
			++i;
		}
	}
	void FixedUpdate(){
		#if UNITY_EDITOR
		RunCharacter(Input.GetAxis("Horizontal"));
		#endif
	}

	private void RunCharacter(float horizontalInput){
		//move player
		characterBody.AddForce(new Vector2(horizontalInput * moveSpeed * Time.deltaTime, 0));

	}
}

إرسال تعليق

1 تعليقات

Emoji
(y)
:)
:(
hihi
:-)
:D
=D
:-d
;(
;-(
@-)
:P
:o
:>)
(o)
:p
(p)
:-s
(m)
8-)
:-t
:-b
b-(
:-#
=p~
x-)
(k)