Thanh đỡ
Bài học 1 trên 19 trong khóa học Trò chơi Unity: phá gạch của Coddy.
Trong khóa học này, bạn sẽ xây dựng trò chơi Brick Breaker trong không gian 3D, gồm một thanh đỡ bóng, một quả bóng nảy, một bức tường gạch, mạng, các màn chơi và vật phẩm tăng sức mạnh. Mọi thứ di chuyển trên mặt phẳng x và y tại z 0. Các script Paddle, Ball, Brick, GameManager và PowerUp hiện vẫn là khung chưa có nội dung. Nút Chơi chạy trò chơi; nút Kiểm tra chấm điểm.
Thanh đỡ bóng có Rigidbody động học, được di chuyển bằng rb.MovePosition trong FixedUpdate(), để hệ thống vật lý nhận biết chuyển động của nó. Vật thể động học xuyên qua tường, nên script giới hạn chuyển động của nó. Nếu giới hạn tâm thanh đỡ bóng ở vị trí bức tường, một nửa thanh sẽ nằm bên trong tường: giới hạn là vị trí bức tường trừ đi một nửa chiều rộng. Với các bức tường ở -6 và 6, cùng thanh đỡ bóng rộng 2:
float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);Tâm luôn nằm trong khoảng từ -5 đến 5, nên hai đầu dừng chính xác ở vị trí các bức tường. Đọc chiều rộng từ transform.localScale.x ở mỗi bước giúp giới hạn luôn chính xác nếu thanh đỡ bóng lớn lên.
Thử thách
DễDi chuyển thanh đỡ giữa hai bức tường.
- Trong
FixedUpdate()củaPaddle, đặtfloat inputthành -1 khi bạn giữ phím mũi tên trái hoặc phím A, thành 1 khi bạn giữ phím mũi tên phải hoặc phím D, còn lại là 0. - Tính
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime; - Với
float half = transform.localScale.x / 2f;, giới hạntarget.xtrong khoảng từ-wallX + halfđếnwallX - half, rồi gọirb.MovePosition(target);
Nhấn Chơi rồi trượt thanh đỡ vào cả hai bức tường: thanh đỡ sẽ dừng lại ở mỗi bức tường. 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()
{
// Di chuyển bằng các phím mũi tên hoặc A và D, đồng thời ở giữa hai bức tường.
}
}
Tất cả bài học trong Trò chơi Unity: phá gạch
Tự luyện tập: Playground Unity