السقوط وإعادة الظهور
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 52 من 60.
التحدي
متوسطيجب أن تعيد السقطة اللاعب إلى مكانه.
- في
Player، أضف[SerializeField] private float fallY = -5f;ونقطة إعادة ظهور، واضبطها على موضع البداية فيStart(). - أضف
public void SetCheckpoint(Vector3 point)لتعيين نقطة إعادة الظهور. - عند النزول إلى ما دون
fallY: عيّنcontroller.enabled = false، وانقل اللاعب إلى نقطة إعادة الظهور، ثم فعّلها مجددًا وامسحvelocity.
اضغط «العب» واقفز إلى الخارج: ستعود إلى المنصة. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
[SerializeField] private float speed = 5f;
[SerializeField] private float jumpHeight = 1.5f;
[SerializeField] private float gravity = -9.81f;
private CharacterController controller;
private InputAction moveAction;
private InputAction jumpAction;
private Vector3 velocity;
private MovingPlatform platform;
void Start()
{
controller = GetComponent<CharacterController>();
moveAction = InputSystem.actions.FindAction("Move");
jumpAction = InputSystem.actions.FindAction("Jump");
}
void Update()
{
if (controller.isGrounded && velocity.y < 0f)
{
velocity.y = -2f;
}
Vector2 input = moveAction.ReadValue<Vector2>();
Vector3 move = new Vector3(input.x, 0f, input.y) * speed;
if (jumpAction.WasPressedThisFrame() && controller.isGrounded)
{
velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
}
velocity.y += gravity * Time.deltaTime;
Vector3 motion = (move + velocity) * Time.deltaTime;
if (platform != null)
{
motion += platform.delta;
platform = null;
}
controller.Move(motion);
}
void OnControllerColliderHit(ControllerColliderHit hit)
{
if (hit.normal.y > 0.5f && hit.gameObject.TryGetComponent(out MovingPlatform moving))
{
platform = moving;
}
}
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity