اذهب إلى المحتوى

السؤال

نشر

السكربت موجود على 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);
	}
}

 

Recommended Posts

  • 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;

 

تم التعديل في بواسطة عماد المعتصم

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...