Làm thế nào tôi có thể làm cho một nhân vật đứng trên sườn dốc?


8

Trước hết, lưu ý rằng tôi muốn hiểu nguyên tắc, vì vậy tôi thích giải thích bằng tiếng Anh đơn giản (nhưng tất nhiên tôi không có gì chống lại một số mã để bổ sung cho các giải thích này).

Tôi đang tự hỏi đâu là cách để nhân vật bước chính xác lên dốc, hãy bắt đầu với hai ảnh chụp màn hình của trò chơi Limbo để cho bạn thấy ý tôi là: Nhân vật chính Limbo đứng trên một con dốc Nhân vật chính Limbo đứng trên một mặt đất bằng phẳng
Vì vậy, như bạn có thể thấy trên những bức ảnh này, nó trông giống như cột sống của nhân vật thực sự vuông góc với đường chân trời chứ không phải bề mặt của mặt đất và quan sát này dẫn tôi đến câu hỏi của tôi:
Làm thế nào bạn có thể tái tạo một hành vi như vậy với Sprite Kit? Bởi vì nếu tôi gắn một cơ thể vật lý vào một nút, tôi có khả năng để cho nó xoay, vì vậy tôi sẽ nhận được một cái gì đó như thế này: Chúng ta có thể thấy rằng sprite đi theo mặt đất mà nó đứng, vì vậy chân của nhân vật nằm trên sàn nhưng cột sống của nó không vuông góc với đường chân trời mà hơn mặt đất

Nếu tôi vô hiệu hóa xoay vòng, tôi sẽ nhận được một cái gì đó giống như thế này: Ở đây, cột sống vuông góc với đường chân trời nhưng bàn chân của nhân vật không chạm sàn.  Trong thực tế, chỉ có một góc của sprite chạm sàn
Như bạn có thể thấy những cách này để thực hiện cả hai vấn đề quan trọng và trông không tự nhiên chút nào. Vậy tôi nên làm thế nào để nó trông tự nhiên? Tôi nghĩ rằng sẽ tạo ra một số họa tiết và một số cơ thể vật lý và sau đó gắn chúng lại với nhau bằng các khớp Tôi không nghĩ rằng nó sẽ trông tự nhiên bởi vì nếu bạn nhìn vào điều này: nhập mô tả hình ảnh ở đây
Mặc dù tôi có thể liên kết các nút này một cách vật lý, tôi sẽ làm thế nào để tạo ra chúng nhìn đồ họa thực sự? Bởi vì trong thực tế, ví dụ, đùi và bắp chân được liên kết bằng đầu gối ...

Có ý kiến ​​gì không?


1
Hãy thử đứng trên một con dốc và xem điều đó diễn ra như thế nào. Khi bạn đặt một chân trước chân kia thì chân cao hơn phải uốn cong để bù cho độ dốc. Vì vậy, cách tiếp cận của bạn với nhiều khớp là một lựa chọn tốt.
Eejin

@Eejin Ok cảm ơn, còn thực tế đồ họa ở cấp độ khớp thì sao? Tôi có thể làm gì liên kết chúng một cách tự nhiên? Để không làm cho nó trông giống như có một số nút?
Trevor

Nó phụ thuộc vào một số khía cạnh của trò chơi của bạn. Tất nhiên cũng rút ra các bộ phận cơ thể giúp. Bạn có thể cung cấp thêm một chút thông tin về kích thước và mức độ chi tiết hoàn hảo quan trọng như thế nào?
Eejin

Nếu mặt đất của bạn luôn luôn, giả sử, cỏ cao, chỉ cần sử dụng điểm thấp của sprite có thể sẽ ổn vì chân nhân vật sẽ bị che khuất đến mức bạn không thể biết họ đang đứng như thế nào.
jzx

Tôi không biết về SpriteKit, nhưng rất nhiều trò chơi đại diện cho người chơi dưới dạng "viên nang" hoặc "viên thuốc" thay vì hình chữ nhật. Ngoài ra, đối tượng vật lý thường nhỏ hơn chính sprite.
Thane Brimhall

Câu trả lời:


6

Để mở rộng câu trả lời của Josh Petrie, việc tìm góc của bàn chân cũng khá đơn giản.

nhập mô tả hình ảnh ở đây

Góc của bàn chân bằng góc của bề mặt nghiêng. Vì chúng ta thuận tiện có hai điểm trên độ dốc đó, chúng ta có thể tìm thấy góc nghiêng (cũng có thể sử dụng hai góc của hình tam giác của độ dốc, nhưng độ dốc dần dần sẽ trở nên phức tạp; đối với đồi dốc, đây là giải pháp tốt nhất). Cuối cùng, độ dốc sẽ là H / P (giả sử gót chân uốn cong nằm ngay dưới hông tương ứng), hoặc arctan (H / P) rad. Sử dụng cosin, người ta có thể dễ dàng thấy rằng H = (F + T) - (Fcosθ + Tcosφ).

Góc của bàn chân trở thành arctan ((F (1-cosθ) + T (1-cosφ)) / P)

PS: Nếu bạn muốn THỰC SỰ vào, bạn cũng có thể tìm thấy chiều rộng được thêm vào P.

PSS: Bàn chân sẽ chỉ uốn cong lên xa, vì vậy hãy ghi nhớ điều đó trước khi bạn cố gắng leo lên một độ dốc 80 độ.

PSSS: Mọi người không leo lên đồi, nhưng họ nghỉ ngơi trên đó. Giữ cho bàn chân phẳng hoàn toàn trên ngọn đồi có thể mô tả chính xác phần nào người chơi đứng trên những quả bóng của ngón chân của họ, và cho phép gót chân chìm xuống đất trong khi chạy không tải có thể tạo ra một chuyển động rất thực tế.


5

Có những giải pháp và thủ thuật đơn giản mà bạn có thể sử dụng (ví dụ: nếu tất cả các sườn của bạn sẽ là một góc cố định, chỉ cần tác giả thêm các họa tiết cho chuyển động dốc và nhàn rỗi, cung cấp một cơ chế cho mã trò chơi của bạn để biết bạn có ở trên bề mặt dốc không, và kết xuất tương ứng - đây thường là những gì các trò chơi dựa trên sprite cũ đã làm).

Một giải pháp chung, mở rộng trên ý tưởng sprite đa khớp của bạn, là sử dụng động học nghịch đảo để giải quyết cho việc đặt chân nhân vật ( xem thêm ).

Điều này liên quan đến việc xác định cấu trúc xương hợp lý cho các nhân vật của bạn, được thể hiện trực quan bằng một số họa tiết riêng biệt (đối với thân, nhiều bộ phận chân bạn cần và chân). Bộ phận cuối trong hệ thống này là vị trí chân của nhân vật trên dốc, có thể được tính từ vị trí thân (cố định) và một số ý tưởng về chân nào ở phía trước, dựa trên khung chu kỳ đi bộ hiện tại. Giữa hai vị trí đã biết, một hệ thống IK có thể giải quyết các tham số cho khớp chân và tạo ra một xấp xỉ hợp lý về cách bất kỳ biped thực nào có thể tự ổn định trên bề mặt dốc.

IK thường được thể hiện dưới dạng một vấn đề 3D, nhưng nó có thể được giảm xuống không gian 2D tương đối dễ dàng. Trong 2D, bạn không cần phải xoay quanh với gần như nhiều ràng buộc xoay chung để tạo ra chuyển động thực tế như trong 3D, điều này thật tuyệt.

Đây là phương pháp được sử dụng bởi nhiều trò chơi 2D hiện đại, đặc biệt là theo xu hướng các tác phẩm sprite dựa trên bộ xương cho các nhân vật, thay vì kỹ thuật cũ hơn của tác giả tay trong mỗi khung hình.

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.