• 0

هل هناك من يشرح لي هذا الكود c# unity

السكربت موجود على coin ولكن لم افهم فيه هذا السطر

if (other.GetComponent<PlayerController>() == null)
            return;

ما المقصود ب   other.GetComponent<PlayerController>() == null

يعني ليه يساوي لا شئ لم افهمها

وكذلك ما الهدف من  return;

 

وكذلك عندي سؤال يحيرني ما الفرق بين كتابة if بي الجسم {} و if بدون الجسم كما في السكربت وما الفرق بينهم ارجو ان اجد من يشرح لي هذه الامور وجزاه الله خيرا

 

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

public class CoinPickup : MonoBehaviour {

	public int pointToAdd;

	private void OnTriggerEnter2D(Collider2D other)
	{
		if (other.GetComponent<PlayerController>() == null)
			return;

		ScoreManager.AddPoints(pointToAdd);

		Destroy(gameObject);
	}
}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

السلام عليكم،

السكربت بسيط و يحدد ما يحدث عندما يتم الإصطدام بالcoin  في اللعبة:

1- إذا اصطدم جسم ما في اللعبة بالcoin يتم تطبيق instructions الموجودة داخل

اقتباس

private void OnTriggerEnter2D(Collider2D other)

,حيث other تمثل الجسم الذي اصطدم بالcoin 

2- نقوم بتحديد هوية الجسم المصطدم other:

 أ- إذا لم يكن الجسم المصطدم هو اللاعب (يجب الأخذ بعين الإعتبار أن اللاعب فقط من يتوفر على مكون PlayerController الذي يتيح التحكم به عبر الكيبورد مثلا). وبالتالي يكفي أن ننظر إذا كان المكون غير موجود (null) عند هذا الجسم لنستنتج أنه ليس اللاعب

اقتباس

if (other.GetComponent<PlayerController>() == null)

في هذه الحالة لا نقوم بأي عملية و نقوم بالرجوع للسكربت الأصلي ببساطة دون أي تغيير في سير اللعبة

اقتباس

   return;

ب- إذا كان الجسم المصطدم هو فعلا اللاعب (شرط null غير صحيح لأن اللاعب يتوفر بالفعل على مكون PlayerController)

نقوم بإظافة النقط المحددة في

اقتباس

public int pointToAdd;

عن طريق instruction

اقتباس

ScoreManager.AddPoints(pointToAdd);

ثم نقوم بتدمير Coin من اللعبة

اقتباس

Destroy(gameObject);

حيث gameObject تمثل Coin  التي تمت الإصطدام بها في اللعبة ( مثل ما يحدث في لعبة mario مثلا).

 

بالنسبة للسؤال الثاني. يكون استعمال {} غير ضروري إذا كان عدد instructions التي نريد تطبيقها يساوي 1. أمثلة:

///if
if(condition is true)
  One and Only one Instruction;

///while
while (condition is true)
  One and Only one instruction every iteration;

Run this after the loop;

///while with multiple instructions: {} are mandatory
while (condition is true)
{
  Instruction 1;
  Instruction 2;
  ...
  Instruction n;
}
Run this after the loop;

 

تمّ تعديل بواسطة عماد المعتصم
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
if (other.GetComponent<PlayerController>() == null)
	return;

معنى الكود ان لم يكن في ( العنصر المصتدم به بعملة trigger ) السكربت او الملحق PlayerController

لا تكم الكود الذي بالأسفل return ارجع لا شيء

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

تحسن للنص

معنى الكود ان لم يكن في العنصر المصتدم به ( في عملية trigger ) السكربت او الملحق PlayerController

لا تكمل الكود الذي بالأسفل return ارجع لا شيء

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن