Trong trò chơi 2D cuộn, các đối tượng nên di chuyển hay máy ảnh nên di chuyển?


8

Tôi chưa quen với thiết kế trò chơi và không thực sự biết mọi thứ được thực hiện như thế nào. Tôi đang nghĩ đến việc xây dựng một trò chơi iOS trong đó một con tàu phải bay càng cao càng tốt (với tốc độ thay đổi), thu thập sức mạnh, et cetera, trên đường đi.

Cách để đi đến đây là gì? Nền và vật phẩm có nên cuộn xuống từ trên xuống hay con tàu thực sự bay lên di chuyển tầm nhìn với nó?


Câu trả lời đúng duy nhất là "cả hai".
Blecki

Câu trả lời:


6

Tất cả đều tương đối. Thực sự, bạn luôn chuyển đổi quan điểm của mình so với vị trí người chơi cố định.

Vì vậy, bây giờ hãy quên màn hình, giả sử bạn có 3 bước này (thể hiện các vị trí khi chúng cập nhật trên mỗi vòng lặp trò chơi):

  1. playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
  2. playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
  3. playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;

(như x, y trong mỗi trường hợp)

Như bạn có thể thấy, người chơi đang bay lên hoặc nhảy lên và di chuyển nhẹ sang phải, trong khi vật thể (có thể là một sức mạnh) đang rơi thẳng xuống. Người chơi bắt được powerup. Bây giờ làm thế nào để bạn vẽ này trên màn hình?

Đầu tiên, giả sử bạn muốn trình phát của mình ở giữa màn hình mọi lúc. Vì vậy, chế độ xem khóa cho người chơi - đây là cách tiếp cận đơn giản nhất để hình dung. Vị trí của người chơi của bạn sau đó sẽ luôn luôn là screenCentre(tức là screenWidth/2, screenHeight/2). Làm thế nào để bạn có được vị trí trên màn hình của các đối tượng khác trên thế giới?

objectScreenPosition = (objectWorldPosition - playerWorldPosition) + screenCentre;

Bạn có thể thấy rằng công thức này hoạt động ngay cả đối với người chơi thực tế, vì (playerWorldPosition- playerWorldPosition) + screenCentrebằng screenCentre. Vì vậy, bạn có thể áp dụng cùng một công thức cho từng thực thể trong trò chơi của mình, chạy qua một danh sách. Bạn có thể sử dụng phương pháp đơn giản này để xây dựng cho những thứ khác (như độ trễ của camera, trường hợp bạn đang ở trong một góc của cấp độ, v.v.)


Và nếu không có hoặc nhiều đối tượng người chơi thì sao? Điều gì nếu bạn muốn làm hiệu ứng đặc biệt như máy ảnh rung? Ngay cả khi toán học trông giống nhau, nó thực sự không giống nhau. Và nó không phải cái này hay cái khác. Đối tượng di chuyển, và máy ảnh cũng di chuyển.
Blecki

1
@Blecki ... Bạn nói, sau khi câu trả lời được chấp nhận. Nếu bạn thực sự nghĩ rằng chúng quá khác biệt, bạn phải có một thời gian khó khăn để thiết lập quan điểm của mình. Đi viết câu trả lời súc tích của riêng bạn về các biến đổi xem liên quan đến tất cả các trường hợp góc, sau đó. Không ai ngăn cản bạn.
Kỹ sư

Bạn có một máy ảnh, nó có một vị trí, bạn tạo ra một ma trận xem. Không có trường hợp góc.
Blecki

1
@Blecki Bây giờ bạn đang mâu thuẫn với chính mình. "Nếu bạn muốn làm các hiệu ứng đặc biệt như rung máy thì sao?"
Kỹ sư

1
@Blecki. Chính xác. Vui mừng khi chúng ta đồng ý.
Kỹ sư
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.