التقط معززًا
الدرس 15 من 19 في دورة لعبة Unity: كاسر الطوب على Coddy.
تلاحظ تعزيزات القوة عملية الالتقاط بنفسها: إذ يلامس مصادمها مصادم المضرب، ويكون الجسمان حركيين، وهذا يكفي لعمل OnTriggerEnter. كما أنها تسقط متجاوزة الكرة، لذا تتحقق من الوسم أولًا.
تُسمّي التعدادات الأنواع، ويضبط كل نموذج أولي نوعه في نافذة Inspector، لذا يكفي نص برمجي واحد لكليهما:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");يجد other.GetComponent<Paddle>() النص البرمجي Paddle على الكائن الذي لمسه تعزيز القوة. في الوقت الحالي، لا يفعل التعزيز الذي يوسّع المضرب سوى تسجيل رسالة؛ وفي الدرس التالي سيجعل المضرب يكبر.
التحدي
صعبالتقط تعزيزًا ساقطًا بالمضرب.
- في
PowerUp، أضفpublic enum Kind { Wide, Multiball }وpublic Kind kind;(يُضبط النوع لكل عنصر مُسبق). - أضف
OnTriggerEnter(Collider other): أعد التنفيذ ما لم يتحققother.CompareTag("Paddle")؛ وإذا كان من النوع Wide، فاستدعِother.GetComponent<Paddle>().Widen();، ثمDestroy(gameObject); - في
Paddle، أضفpublic void Widen()لتسجيلWide paddleفي الوقت الحالي.
اضغط «العب» والتقط واحدًا أخضر: سيختفي وستعرض وحدة التحكم Wide paddle. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // تقع الأوجه الداخلية للجدران الجانبية عند -wallX وwallX
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float input = 0f;
if (Keyboard.current.leftArrowKey.isPressed || Keyboard.current.aKey.isPressed) input -= 1f;
if (Keyboard.current.rightArrowKey.isPressed || Keyboard.current.dKey.isPressed) input += 1f;
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
float halfWidth = transform.localScale.x / 2f;
target.x = Mathf.Clamp(target.x, -wallX + halfWidth, wallX - halfWidth);
rb.MovePosition(target);
}
}
جميع دروس لعبة Unity: كاسر الطوب
تدرّب بنفسك: Playground لـ Unity