PhysicsService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet

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

Yöntemler

Ö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

name1: string
Varsayılan değer: ""
name2: string
Varsayılan değer: ""
collidable: boolean
Varsayılan değer: ""

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

name1: string
Varsayılan değer: ""
name2: string
Varsayılan değer: ""

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

name: string
Varsayılan değer: ""

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

name: string
Varsayılan değer: ""

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().

PhysicsService:RegisterCollisionGroup

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

from: string
Varsayılan değer: ""
to: string
Varsayılan değer: ""

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.

Parametreler

name: string
Varsayılan değer: ""

Dönüşler

()

Etkinlikler