mermilere vuruş algılama nasıl eklenir


cevap 1:

Öncelikle, OpenGL'nin sadece ilgi için aldığım bir konu olduğunu ve bir bütün olarak bilgisayar bilimi hakkında fazla bilgim olmadığını söyleyerek başlıyorum. Ancak bunun kolay bir yolu, oyun dünyasının temelde 2 boyutlu bir ekran olmasıdır. Vurmak istediğiniz hedefin uçaklardan oluştuğunu hayal edin. Artık 3D noktayı 2D'den almak mümkün (OpenGL'de hükümler var). Tek ihtiyacımız olan, oyunda işaret eden silahın kapsamı. X, y koordinatlarından X, Y, Z'yi alın. Şimdi bununla, X, Y, Z'nin hedef düzlemin (bu durumda bir dikdörtgen veya üçgen) içine düşüp düşmediğini kontrol edin.


cevap 2:

Gitmenin en iyi yolu, çarpışma ışını yayınıdır. Bu şekilde, mermi atışınızı işlemek için ihtiyacınız olan tüm bilgileri elde edeceksiniz: çarpışma noktası, isabet noktasındaki normal vektör (doğru yönde parçacıklar yaymak gibi çeşitli şeyler için kullanılabilir), vurduğunuz çokgen, vurduğunuz varlık. Çarpışma ışını dökümünün, ışınınızla çarpışmayı test ettiğiniz nesnelerin hızlı listesini sorgulamak için alan bölümleme nesneniz üzerinde çalışması gerekir. Küre, kutu, silindir ve diğer ilkeller arasında çarpışma algılama yöntemleri oluştururken aynı zamanda ışın ve ilkel çarpıştırıcı eklemek için düşünün. Tüm sistemi kurmak biraz çalışma gerektirir, ancak sonuçlar ödüllendiricidir.


cevap 3:

Ray dökümü. Silahın namlusundan bir ışın yansıtırsınız ve ışının başka bir karakterin ağına çarpıp çarpmadığını görürsünüz. Çoğu 3B kitaplığın raycasting desteği vardır.

İşte bir örnek olarak.