PhysicsService
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
PhysicsService öncelikle, bir dizi parçanın diğer çarpışma gruplarındaki parçalarla çarpışıp çarpışmayacağını tanımlayan çarpışma grupları ile çalışmak için yöntemler içerir.Bir çarpışma grubunu RegisterCollisionGroup() aracılığıyla kaydedip, bu parçaların CollisionGroup çarpışma grubunun adına atayarak kaydedebilirsiniz.
Çarpışma grupları arasındaki çarpışma ilişkilerinin oluşturulması, silinmesi ve değiştirilmesi, sunucu tarafına sınırlıdır Scripts .
Studio ve senaryolar içinde kullanım ayrıntılarına bakın Çarpışma Filtreleme.
Özet
Özellikler
Yöntemler
İki grubun çarpışma durumunu ayarlar.
İki grubun çakışıp çakışmayacağını döndürür.
Maksimum çarpışma grubu sayısını döndürür.
Tüm dünyaçarpışma grupları hakkında bilgi içeren bir tablo döndürür.
Bir çarpışma grubunun kaydedildiğini kontrol eder.
Verilen adla yeni bir çarpışma grubu kaydedilir.
Belirtilen çarpışma grupadını değiştirir.
Verilen ad için çarpışma grubunu kaydolmadan bırakır.
Özellikler
Yöntemler
CollisionGroupSetCollidable
İki grubun çarpışma durumunu ayarlar.Bu yöntem, gruplardan birinin kaydedilmediği durumda bir hata verecektir, bu nedenle bu çağrıyı yapmadan önce her grubun kaydını PhysicsService:IsCollisionGroupRegistered() doğrulamanız önerilir.
Parametreler
Dönüşler
CollisionGroupsAreCollidable
Belirtilen iki çarpışma grubunun çarpışıp çarpışmayacağını döndürür.Bu yöntem ayrıca varsayılan çarpışma maskesi tüm gruplarla çakıştığından gruplardan herhangi birinin kayıt edilmediğini de geri verecektir, çünkü varsayılan çarpışma maskesi tüm gruplarla çakışır.
Parametreler
Dönüşler
GetMaxCollisionGroups
Motorun desteklediği en fazla çarpışma grubu sayısını döndürür. Bu değer şu anda 32'dir.
Dönüşler
GetRegisteredCollisionGroups
Tüm dünyaçarpışma grupları hakkında bilgi içeren bir tablo döndürür. Geri döndürülen tablodaki her değer kendisi bir tablo ve iki üye içerir:
<th>Tür</th><th>Açıklama</th></tr></thead><tbody><tr><td>maskesi</td><td>sayısal</td><td>Çarpışma grupmaskesi; yalnızca iç kullanım için.</td></tr><tr><td>adı</td><td>dizi</td><td>Çarpışma grupadı.</td></tr></tbody>
Üye |
---|
Dönüşler
IsCollisionGroupRegistered
Bir çarpışma grubunun kaydedildiğini kontrol eder.Bu yöntemi, PhysicsService:CollisionGroupSetCollidable() gibi kayıtsız çarpışma grupları için hata veren yöntemleri çağırmadan önce çağırmanız önerilir.
Parametreler
Dönüşler
RegisterCollisionGroup
Verilen isimle yeni bir çarpışma grubu kaydedilir. İsim "Default" olarak kullanılamaz.
Bu yöntemin çalışma alanındaki BaseParts sayısına dayalı hafif bir performans aşırılığı olduğunu unutmayın, bu nedenle tüm çarpışma gruplarını düzenleme sırasında Studio editörü aracılığıyla kaydedin ve mümkün olduğunca az sıklıkla UnregisterCollisionGroup() ve RenameCollisionGroup() çağırın.
Parametreler
Dönüşler
Kod Örnekleri
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
RenameCollisionGroup
Belirtilen kayıtlı çarpışma grubunun adını değiştirir, ancak grubun kullandığı parçaların adını değiştirmez özelliğini değiştirmez.Bu yöntemin ilk argümanı, yeniden adlandırılacak grubun adıdır, ikinci argümanı da grubun yeni adıdır.Belirtilen grup mevcut değilse, bu yöntem hiçbir şey yapmayacaktır.Yeni adın adlandırma kuralları, grubun RegisterCollisionGroup() ile oluşturulduğu gibi aynı kurallara uyar.
Bu yöntem aşağıdaki durumlarda bir çalışma süresi hatası atacaktır:
- Herhangi bir argüman için verilen geçersiz veya boş isim.
- Yöntem bir istemciden çağrılır.
Bu yöntemin çalışma alanındaki BaseParts sayısına dayalı hafif bir performans aşırılığı olduğunu unutmayın, bu nedenle tüm çarpışma gruplarını düzenleme sırasında Studio editörü aracılığıyla kaydedin ve mümkün olduğunca az adlandırın.
Parametreler
Dönüşler
UnregisterCollisionGroup
Verilen ad için çarpışma grubunu kaydettirmez, aşağıdaki davranışlarla:
- Geçersiz bir isim verilirse, yöntem hiçbir şey yapmayacaktır.
- Rezerve edilmiş isim sağlanırsa, yöntem bir istemciden çağrılırsa, bir hata oluşur.
- Çarpışma grubundan kaldırıldığında herhangi bir parça varsa, bu parçalar hala aynı çarpışma grubu adını korur.Kaldırılmış bir grubdaki parçaların fiziksel davranışı tanımlanmaz, bu nedenle herhangi bir parçayı kaldırılmış bir grubun başka bir gruptaşımak önerilir, örneğin "Default" grup.
Bu yöntemin çalışma alanındaki BaseParts sayısına dayalı hafif bir performans aşırılığı olduğunu unutmayın, bu nedenle tüm çarpışma gruplarını düzenleme sırasında Studio editörü aracılığıyla kaydedin ve bu yöntemi mümkün olduğunca az çağırın.