Chụp hình cùng nhau trong trò chơi


8

Tôi đang cố gắng tìm ra cách để ghép các hình lại với nhau, người chơi có thể di chuyển xung quanh trên một khung vẽ.

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

Khi hình vuông tiếp cận đối tượng khác, tôi muốn kéo hình đó vào (có một khoảng cách nhất định) và để nó chụp hoàn hảo dọc theo cạnh của đối tượng đó.

Quy tắc:

  • Chỉ khi các cạnh song song với nhau
  • Nếu một hình vuông con (bị kéo) bằng một nửa kích thước của hình vuông cha mẹ (đang được tiếp cận), thì trung điểm của cạnh hình vuông cha mẹ có thể xác định xem con có chộp sang trái / phải / lên / xuống không

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

Có ai đã làm bất cứ điều gì như thế này? Tôi đang sử dụng c # và unity. Chúc mừng.

Câu trả lời:


7

Tôi đã viết một nguyên mẫu của một cái gì đó như thế này. Tôi đã tạo một số tài nguyên trông như thế này:

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

Vì vậy, về cơ bản, đối tượng "ShipPart" này có các điểm chụp được xác định trước. Bốn máy va chạm này sẽ giúp xác định xem bạn có cố chụp một vật vào đúng vị trí hay không.

Tiếp theo tôi đã tạo một lớp ShipPart, có chứa một số thứ như:

//Neighbor information
ShipPart Left, Right, Top, Bottom;

//current rotation
float Rotation;

//The ship core it is attached to
Ship Ship;

//The coordinates in references to the ship core
int X ;
int Y ;

Nó cũng chứa các chức năng và thuộc tính để giúp kéo và thả và kiểm tra trạng thái của ShipParts lân cận.

Một chức năng quan trọng là hàm Đính kèm () sẽ kết nối ShipPart này với Tàu của bạn.

public void Attach(Ship ship, int x, int y)
{
    GetComponent<Rigidbody2D> ().isKinematic = true;

    Ship = ship;

    X = x;
    Y = y;

    transform.parent = Ship.transform;
    transform.position = Vector2.zero;
    transform.localPosition = new Vector2(x, -y);
}

Cuối cùng, lớp Ship, theo dõi mảnh Core của bạn, tất cả các phần đính kèm, tất cả dữ liệu về tàu được quản lý ở đây. Bạn có thể raycast cho các bộ phận tàu trong lớp này. Kiểm tra phần mà bạn hiện đang kéo để xem liệu có bất kỳ trình va chạm nào đang va chạm với các phần khác không.

Nếu có xung đột, hãy kiểm tra xem vòng quay có nằm trong ngưỡng chỉ định của bạn không và sau đó chụp nó vào vị trí.

Điều này thực sự phức tạp hơn rất nhiều để giải thích hơn tôi nghĩ nó sẽ xảy ra. Hãy cho tôi biết nếu bạn có câu hỏi và tôi sẽ giải thích bất cứ điều gì bạn cần thêm trợ giúp.

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


Cảm ơn câu trả lời minh họa độc đáo - Tôi có một câu hỏi :), các điểm chụp nhanh được xác định trước, đây có phải là những điểm mà bạn đang kiểm tra sự gần gũi không? Sau đó, khi chúng ở gần, hộp màu xanh lá cây xuất hiện .. có nghĩa là nếu bạn phát hành ngay bây giờ, việc chụp nhanh đã xong?
dolyth

1
Vâng, các hộp màu xanh lá cây là để chỉ ra rằng một snap có sẵn, và nơi nó sẽ chụp. Máy va chạm tồn tại trong cùng khu vực này và là thứ được sử dụng để xác định xem bạn có thể chụp hay không. Tôi chiếu bốn điểm trong khi chủ động di chuyển một phần để xác định xem chúng ta có chồng chéo một điểm chụp hay không - và nếu chúng ta ở gần, chúng ta sẽ ở gần đối tượng đó như thế nào.
jgallant

Làm thế nào để bạn có được các hộp màu xanh lá cây xuất hiện khi bạn đang chụp? Bạn có tất cả các tập lệnh trong github ở đâu đó không? Cảm ơn, Melissa
MContinator 27/07/19
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.