Bắt vật phẩm tăng sức mạnh
Bài học 15 trên 19 trong khóa học Trò chơi Unity: phá gạch của Coddy.
Vật phẩm tăng sức mạnh tự nhận biết khi được bắt: collider kích hoạt của nó chạm vào collider của thanh đỡ, và cả hai vật thể đều là vật thể động học, như vậy là đủ để OnTriggerEnter chạy. Nó cũng rơi qua bóng, nên trước tiên nó kiểm tra thẻ.
Một enum đặt tên cho các loại, và mỗi prefab tự thiết lập giá trị trong Inspector, nên một script có thể dùng cho cả hai:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>() tìm script Paddle trên đối tượng mà vật phẩm tăng sức mạnh chạm vào. Hiện tại, loại Wide chỉ ghi nhật ký; bài học tiếp theo sẽ làm thanh đỡ dài ra.
Thử thách
KhóĐón vật phẩm tăng sức mạnh đang rơi bằng thanh đỡ.
- Trong
PowerUp, thêmpublic enum Kind { Wide, Multiball }vàpublic Kind kind;(mỗi prefab đặt loại của nó). - Thêm
OnTriggerEnter(Collider other): thoát hàm nếuother.CompareTag("Paddle")không đúng; vật phẩm loại Wide gọiother.GetComponent<Paddle>().Widen();, sau đó gọiDestroy(gameObject); - Trong
Paddle, thêmpublic void Widen()để tạm thời ghiWide paddlevào nhật ký.
Nhấn Chơi và đón một vật phẩm màu xanh lá: vật phẩm biến mất và Console hiển thị Wide paddle. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // Mặt trong của hai bức tường bên nằm tại -wallX và 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);
}
}
Tất cả bài học trong Trò chơi Unity: phá gạch
4Vật phẩm tăng sức mạnh
Vật phẩm rơi xuốngTự luyện tập: Playground Unity