Xem xét thao tác các lớp của bạn trong thời gian chạy.
Kích hoạt / vô hiệu hóa va chạm cho các đối tượng nhất định với toàn bộ các lớp
Vật lý.IgnoreCollision và Vật lý.IgnoreLayerCollision cho phép bạn vô hiệu hóa các va chạm giữa hai máy va chạm và giữa hai lớp tương ứng.
Nếu bạn muốn loại trừ một máy va chạm cụ thể khỏi các va chạm, không có cách nào được xây dựng để làm điều đó. Nếu bạn đang sử dụng các cứng nhắc không động học với các trình thu thập không kích hoạt, sẽ luôn có một phản hồi ngay cả khi bạn cố gắng lọc các phản hồi bằng thẻ.
Cách chúng tôi thực hiện điều này trong dự án của chúng tôi là tạo ra một lớp có tên là "Void". Void không va chạm với bất cứ điều gì cả.
Bây giờ bạn có thể tạm thời vô hiệu hóa xung đột của máy va chạm bằng cách đặt lớp của nó thành "Vô hiệu" và bật lại bằng cách khôi phục lớp cũ của nó.
Đây là ý chính:
int oldLayer = -1;
int voidLayer;
void Start()
{
voidLayer = LayerMask.NameToLayer("Void");
}
void DisableCollider(Collider col)
{
oldLayer = col.gameObject.layer;
col.gameObject.layer = voidLayer;
}
void EnableCollider(Collider col)
{
col.gameObject.layer = oldLayer;
}
Chúng tôi đã làm điều này một cách cụ thể bởi vì việc kích hoạt và vô hiệu hóa các máy va chạm là con của những người cứng nhắc có thể thực sự làm hỏng mọi thứ trong một số trường hợp. Vì vậy, bạn không thể vô hiệu hóa một phần của máy va chạm cứng, nhưng bạn có thể trao đổi một cách đáng tin cậy xung quanh lớp của một trong các bộ phận va chạm ghép.
Bây giờ tình hình cụ thể của bạn
Để giảm va chạm zombie gây ảnh hưởng đến xe của bạn, hãy xem xét việc kích hoạt zombie cứng nhắc của bạn hoặc làm cho khối lượng của chúng rất nhỏ (như float.Epsilon), vì vậy tác động không ảnh hưởng đến động lượng của xe. Khi va chạm, bạn cũng có thể thực hiện chuyển đổi lớp này, để các va chạm tiếp theo không được kích hoạt, ngay cả khi lần đầu tiên tác dụng một lực không đáng kể lên thân xe.
Bạn thậm chí có thể chuyển chúng sang một lớp không va chạm với xe.
Bạn cũng có thể đặt một máy va chạm khác vào zombie được kích hoạt khi chạy qua. Bằng cách này, bạn có thể giả mạo lực tác động OnTrigger Entry. Bạn không thể có được chính xác với nó, nhưng bạn có thể ước chừng nơi các quy tắc liên lạc có thể đủ tốt để ném zombie vào một nơi vui vẻ.
Bạn phải tự hỏi:
Tôi có muốn đánh bại lũ thây ma đang chạy xung quanh bằng xe của mình không, hay chúng chỉ nên đóng một phim hoạt hình chết chóc?
Tôi có quan tâm nếu vận tốc và tốc độ góc của chiếc xe bị ảnh hưởng theo những cách nhỏ hơn bằng cách đánh zombie không?