من أكثر الألعاب الإلكترونية شهرة وانتشار هي الآن تلك الألعاب التي يتم إنتاجها أو نشرها خصيصا للهواتف المحمولة، فالهواتف هي مستقبل المنتظر، وهي من ستحل محل أجهزة الكمبيوتر في المستقبل القريب، بل أن كثير الأشخاص قد أعتمدوا على الهاتف المحمول في حياتهم كبديل لأجهزة الكمبيوتر، ونحن أيضا كمطوري ألعاب علينا أن نستعد لذلك ونطور من مهاراتنا في إنشاء وتطوير الألعاب التي تستهدف الهاتف المحمول.
وهنا وعبر هذا المقال سنعرض لكم سكربت بسيط لتحريك اللاعب عبر شاشة الهاتف عبر إستخدام أصابعنا، التي تعطي لللعبة الأوامر لتحريك اللاعب يمين ويسار وذلك حسب حركة لمس الأصابع للشاشة.
شرح الأكواد:
في البداية يتم تعريف عدد من المتغيرات العامة التي سوف يتم إستخدامها، وإدخال قيمتها لتكون مناسبة لعبة على حدى مثل متغير '' 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 تعليقات
هل لديك قنات علي اليوتيوب لشرحها ؟
ردحذف