Xử lý va chạm trong unity

     
*
*
*
*

Bạn đang xem: Xử lý va chạm trong unity

*

Học Unity»Ban Quản trị thông báo»Tin tức với trao đổi chung»Xử lý va chạm trong Unity (phần 1)
Email chủ thể nàyXem chủ thể này
*
In chủ thể này

Xem thêm: Đánh Giá Có Nên Mua Chevrolet Aveo Ltz Cũ Không? ? Đánh Giá Có Nên Mua Chevrolet Aveo Cũ Không

*
*

*

Collision detection in Unity (part 1)Va đụng vào game, là sự kiện xẩy ra lúc hai thiết bị thể (object) đi vào không khí của nhau, là 1 trong số những sự khiếu nại hay chạm chán nhất khi lập trình game. Đụng quái thú, đụng bom, va tường, trúng mũi thương hiệu, trải qua mốc, tiếp cận đích, … số đông nên sự kiện va chạm cùng giải pháp xử lý va va.Vậy tình huống là: lúc hai đồ gia dụng thể va đụng, chúng vẫn thông tin sự khiếu nại hàm va chạm và ta cần xử lý sự khiếu nại trong hàm này.Có 2 loại va chạm: Collision với TriggerPhân biệt nhau khôn cùng dễ:– Collision là va va mà lại nhị object ko đi xuyên qua được, giỏi nói cách khác là “đụng”, Lúc object này đụng object tê thì bị chống lại. Ví dụ: quả láng va tường bị dội lại– Trigger là va chạm mà object này rất có thể đi chiếu thẳng qua object tê. Ví dụ: quả bóng bay ngang qua ngọn gàng lửa.Xử lý va đụng có thể vận dụng đến vấn đề tạo thành hiệu ứng thứ lý tuyệt đơn thuần chỉ với call hàm để giải pháp xử lý sự kiện, vào bài xích này, Unity Việt chỉ reviews cách call hàm giải pháp xử lý va va, hiệu ứng đồ lý đang nhằm bài bác tiếp theo.Phần 1: va chạm trong môi trường thiên nhiên 3Dtất cả 3 bước nhằm nhấn sự khiếu nại va chạmCách 1: Tạo không gian Collider
*
Ví dụ, chúng ta gồm 2 object là Hinc Cau A với Hinh Khoi B, nhằm A cùng B có thể xẩy ra va chạm, thì nhì object này cần được “bao” lại bởi 1 không khí va đụng Collider, lúc nhì không gian Collider này “đụng” nhau, thì xảy ra va va.Vậy đầu tiên ta đề nghị tạo ra không gian va va phủ quanh object bằng phương pháp thêm 1 component Collider cho object đóCách làm:– lựa chọn object– vào Menu Component > Physics > (hoặc nhấn Add Component, tìm kiếm “collider”) và lựa chọn 1 giao diện Collider trong những các đẳng cấp sau:o Box Collider: không gian va chạm phủ quanh object là 1 trong hình kăn năn vuôngo Sphere: … hình kăn năn cầuo Capsule: … hình viên nhộngo Mesh: … làm ra khớp ứng với hình trạng của đồ vật thể (do thế đã làm cho nặng trĩu game nhất)o Wheel: … hình đĩa tròno Terrain: …hình mặt phẳng, thường được sử dụng đến khía cạnh đất
*
– Trong thời điểm này object sẽ mở ra 1 component Collider tương xứng, và đồ dùng thể cũng trở thành có một khung màu xanh lá bảo phủ thay mặt đến không khí Collider (gọi tắt là Collider)
*
Các thông số kỹ thuật trong Component Collider:– Is Trigger: khẳng định là loại va va làm sao, quý giá True là va đụng trigger, False là va va collision– Material: bề mặt va chạm đề tạo nên hiệu ứng vật dụng lý, ví như cảm giác lũ hồi yêu cầu mặt phẳng bầy hồi, … có thể bỏ qua– Center: địa chỉ kha khá của Collider so với object– Ngoài ra, mỗi một số loại Collider sẽ có vài thông số kỹ thuật riêng rẽ như: Box tất cả Size, Sphere bao gồm Radius (chào bán kính), Capsule tất cả Height với Direction, …Ở ví dụ này, ta làm cho hình Cầu A một Sphere Collider và tạo cho hình Kân hận B một Box Collider, thực tế thì bạn phải lựa chọn một số loại Collider cân xứng duy nhất cùng với đề xuất game và làm nên của object.
*
Mẹo: nhằm biến đổi form size lập cập mang lại Collider, bạn cũng có thể dấn Shift và kéo thả những cầm trên size xanh láDường như, nhằm có thể nhấn sự kiện va đụng, bạn cũng cần được add component Rigitoàn thân mang đến từng object
*
Mẹo: bỏ chọn Use Gravity nhằm object không biến thành rơiCách 2: Viết Code xử lý va chạmHàm sự khiếu nại va va buộc phải được đặt trong đoạn script là component của object tất cả Collider (coi hình)Ở ví dụ này, ta tạo mới script Xu_Ly_Va_Cham_Hinh_Cau_A mang lại hình cầu A và Xu_Ly_Va_Cham_Hinh_Khoi_B cho hình kân hận B
*
ở mỗi script của A và B, ta viết thêm những hàm sự kiện sau:
using System.Collections; public class Xu_Ly_Va_Cham_Hinh_Cau_A : MonoBehaviour // Use this for initialization void Start () // Update is called once per frame void Update () void OnCollisionEnter (Collision col1) print(gameObject.name + " OnCollisionEnter voi " + col1.gameObject.name); void OnTriggerEnter(Collider col2) print(gameObject.name + " OnTriggerEnter voi " + col2.gameObject.name); void OnTriggerExit(Collider col2) print(gameObject.name + " OnTriggerExit voi " + col2.gameObject.name);
Giải thích:OnCollisionEnter: Hàm sự kiện ứng với va va các loại collision, lúc hai Collider phần nhiều thuộc các loại collision bắt đầu va đụng, giỏi nói theo một cách khác là collider của object xúc tiếp với collider của object kiaOnTriggerEnter: Hàm sự kiện ứng cùng với va va nhiều loại trigger, khi nhị Collider nằm trong các loại trigger bước đầu va đụng, giỏi nói theo một cách khác là collider của object này đi vào collider của object kiaOnTriggerExit: Hàm sự kiện ứng với va chạm các loại trigger, lúc hai Collider nằm trong nhiều loại trigger thoát ra khỏi va chạm, giỏi nói theo cách khác là collider của object này ra khỏi collider của object kiaĐây là cha hàm hay sử dụng tốt nhất, ko kể chúng ta có thể tìm hiểu thêm những hàm khác tại trên đây http://docs.unity3d.com/...Reference/Collider.html, phần MessagesBước 3: chạy thửTest va va nhiều loại collision:Chắc rằng trên component Collider, mục Is Trigger ko được chọnChạy thử, dùng con chuột kéo di chuyển hình cầu A lại va vào hình kăn năn B, các bạn sẽ thấy hình kăn năn B bị đẩy đi và công dụng in ra trên cửa sổ Console:“Hinch Khoi B OnCollisionEnter voi Hinc Cau A”“Hinh Cau A OnCollisionEnter voi Hinh Khoi B”
*
Test va chạm một số loại trigger:Chắc rằng tại component Collider, mục Is Trigger được chọnChạy test, sử dụng con chuột kéo di chuyển hình cầu A lại chạm vào hình khối B, các bạn sẽ thấy hình cầu A đi xuyên vào rồi xuyên qua hình khối hận B cùng tác dụng in ra tại hành lang cửa số Console:“Hinh Cau A OnTriggerEnter voi Hinh Khoi B”“Hinch Khoi B OnTriggerEnter voi Hinc Cau A”“Hinh Cau A OnTriggerExit voi Hinc Khoi B”“Hinc Khoi B OnTriggerExit voi Hinch Cau A”
*
Trong phần tiếp theo sau, UnityViet.com sẽ trình diễn va chạm trong môi trường xung quanh 2 chiều và các điều kiện nhằm xẩy ra va va, xin chào cùng hứa gặp gỡ lại!Tmê man khảo thêm Clip lý giải về OnTriggerEnter tại:http://unity3d.com/learn...ysics/on-collision-enter
người sáng tác bài viết : Đậu Tài