Humanoid
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Humanoid, modellere bir karakterin işlevselliğini veren özel bir nesnedir.Modelin fiziksel olarak etrafında dolaşıp Roblox deneyiminin çeşitli bileşenleriyle etkileşime girebilme yeteneğini verir.Humanoidler daima bir içinde ebeveynliğe sahiptir ve modelin bir montajı olması beklenir ve ; montajın kök kısmının adlandırılması beklenir .Ayrıca, Head adlı bir parçanın karakterin gövdesine doğrudan veya dolaylı olarak bağlanmasını bekler.Varsayılan olarak, Roblox tarafından sağlanan iki resmi karakter kolu vardır, her biri kendi kurallarına sahiptir:
R6
- 6 parça kullanan temel bir karakter yapısı.
- The Head kısmı, Torso adlı bir parçaya bağlanmalı veya Humanoid hemen ölecek.
- Vücut Parçası görünümleri CharacterMesh nesneleri kullanılarak uygulanır.
- Humanoid.LeftLeg ve Humanoid.RightLeg gibi bazı özellikler yalnızca R6 ile çalışır.
R15
- R6'dan daha karmaşık, ancak çok daha esnek ve sağlam.
- Kollar için 15 parça kullanır.
- The Head kısmı, UpperTorso adlı bir parçaya bağlanmalı veya insansız hemen ölecek.
- Vücut Parçası görünümleri doğrudan birleştirilmelidir.
- Humanoit içinde özel NumberValue nesneler kullanarak dinamik olarak ölçeklendirilebilir.
- Humanoid, her bir ekstremitede adlandırılan Vector3Value nesneleri otomatik olarak oluşturur OriginalSize.
- Bir NumberValue, Humanoid'in içine ebeveyn alınır ve takip edilenbiri olarak adlandırılırsa, ölçekleme işlevini kontrol etmek için kullanılacaktır:
- Vücut Derinliği Ölçeği
- Vücut Yüksekliği Ölçeği
- Vücut Genişliği Ölçeği
- Kafa Ölçeği
Kod Örnekleri
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
Özet
Özellikler
Karakterin bir engeli mobil bir cihazda oyuncu olarak vurduğunda otomatik olarak atlayıp atmayacağını ayarlar.
Otomatik Döndürme, insanoid'in hangi yöne döneceğini otomatik olarak belirler; hareket ettiği yönde.
Aktifleştirildiğinde, Otomatik Ölçekleme Etkinleştirildi, insansızın çocuk ölçek değerlerinin değişmesine yanıt olarak karakterin boyutunun değişmesine neden olur.
İnsansızın eklemlerinin Enum.HumanoidStateType.Dead durumunda kırılıp kırılmadığını belirler.
Fotoğraf makinesinin konu pozisyonuna uygulanan bir ofset, Kamera Konusu bu insansıza ayarlandığında.
Humanoit'in adının ve sağlık görüntüsünün uzaklık davranışını kontrol eder.
Kafalarının üzerinde görüntülenen bir Insanoid'in metnini ayarlar.
Şu anda durduğu Enum.Material üzerindeki Humanoid açıklar.Eğer Humanoid hiçbir şeyin üzerinde durmuyorsa, bu özelliğin değeri Hava olacaktır.
Menzildeki Humanoid'in mevcut sağlığını tanımlar [0, Humanoid.MaxHealth ].
Bir insansızın sağlık çubuğunun görülebildiği mesafeyi kontrol etmek için DisplayDistanceType özelliği ile birlikte kullanılır.
Humanoit'in sağlık çubuğunun görüntülenmesine izin verilen durumları kontrol eder.
Humanoid.RootPart yerden uzak mesafeyi belirler. yerden uzak mesafe olması gereken.
Eğer true , Humanoid yukarı doğru bir güçle atlar.
Humanoid atladığı yüksekliğe kontrol sağlar.
Zıplarken Humanoid üzerine ne kadar yukarı kuvvet uygulanacağını belirler.
Bir insansızın maksimum değeri Health .
Bir insansızın kaymadan üzerinde yürüyebileceği maksimum eğim açısı.
Humanoid'nin yürüdüğü yönü tanımlar.
Bir insansızın adının görülebildiği mesafeyi kontrol etmek için Humanoid.DisplayDistanceType özelliği ile birlikte kullanılır.
Bir insansızın adının ve sağlık çubuğunun duvarların veya diğer nesnelerin arkasında görülebileceğini kontrol eder.
Humanoid şu anda Enum.HumanoidStateType.PlatformStanding durumunda olup olmadığını belirler.
Geliştiricilerin Neck'in kaldırılması veya geçici olarak bağlantı kesilmesi durumunda bir oyuncunun ölmesini devre dışı bırakmasına izin verir.
Bu Humanoid kullanılıyor mu miras R6 karakter kolu, yoksa yeni R15 karakter kolu mı? tanımlar.
Humanoit'in HumanoidRootPart nesnesine bir referans.
Bir Humanoid şu anda oturduğu koltuğa referans, varsa.
Humanoid'nin şu anda oturup oturmadığını tanımlar.
Bir Player ile dünyada son kez tıklanan Humanoid 'i kontrol eden 3B pozisyonu tanımlar, bir Tool kullanırken.
JumpHeight (yanlış) veya Humanoid.JumpPower (doğru) özellik kullanılıp kullanılmadığını belirler.
İnsansızın maksimum hareket hızını saniye başına çivilerle tanımlar.
Bir insansız tarafından ulaşılmaya çalışılan bir parçaya referans.
Bir insansızın ulaşmaya çalıştığı pozisyon, Humanoid:MoveTo() 'ya bir çağrı yapıldıktan sonra.
Yöntemler
Belirtilen Accessory 'yi insansızın ebeveynine bağlar.
Bir insansız karakterde Motor6D bağlantıların bir ağacını bir araya getirerek Attachment nesneleri birleştirerek birleştirir.
Verilen Humanoid 'e girmek için Enum.HumanoidStateType 'i ayarlar.
Humanoid'in ebeveyninin şu anda giydiği bir dizi Accessory nesneyi döndürür.
İnsansızın önbelleğinde saklanmış HumanoidDescription kopyasını döndürür, ki bu onun mevcut görünümünü tanımlar.
Bir vücut parçasını bu yönteme geçir (vücut parçası Humanoid'in bir kardeşi ve bir Model'in çocuğu olmalıdır) ile Enum.BodyPartR15 'nin Part 'sini almak için.
Verilen Enum.Limb ile ilişkili olan Part sayısal değeri döndürür.
İnsansızın mevcut Enum.HumanoidStateType 'sini döndürür.
Bir Enum.HumanoidStateType 'nin Humanoid için etkinleştirilip etkinleştirilmediğini döndürür.
Verilen yönde yürümesine neden olur Humanoid .
Humanoid ı, Humanoid.WalkToPoint ve Humanoid.WalkToPart özelliklerini ayarlayarak verilen konuma yürümeye çalışmasına neden olur.
Humanoit'in ebeveyni tarafından giyilen tüm Accessory nesneleri kaldırır
Dinamik olarak bir Insanoid vücut parçasını farklı bir parça ile değiştirir.
Verilen Enum.HumanoidStateType 'nin Humanoid için etkinleştirilip etkinleştirilmediğini ayarlar.
Verilen Humanoid.Health tarafından korunmuyorsa, Humanoid ın değerini düşürür, eğer bir ForceField tarafından korunmazsa.
Şu anda Tool tarafından donatılan herhangi birini çıkarır Humanoid.
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Karakterin görünümünü HumanoidDescription geçen ile eşleştirir.
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Karakterin görünümünü, dış değişikliklerden sonra bile, HumanoidDescription geçen görünüme eşleştirir.
Duygular oynar ve başarılı bir şekilde çalıştırıldıysa geri döner.
Etkinlikler
Bir Humanoid üzerinde yükselen hız değiştiğinde ateş eder.
Humanoid öldüğünde ateş eder.
Humanoid veya FallingDown``Enum.HumanoidStateType girdiğinde yangın çıkar
Humanoid veya Freefall``Enum.HumanoidStateType girdiğinde yangın çıkar
Humanoid veya GettingUp``Enum.HumanoidStateType girdiğinde yangın çıkar
Humanoid.Health değiştiğinde veya Humanoid.MaxHealth ayarlandığında ateş eder (veya ayarlanır).
Giriş yaptığında ve Humanoid çıktığında Jumping``Enum.HumanoidStateType girer ve ayrılır.
bir hedef tarafından ilan edilen bir hedefe yürümeyi bitirdiğinde ateş eder.
Humanoid veya PlatformStanding``Enum.HumanoidStateType girdiğinde yangın çıkar
Humanoid veya Ragdoll``Enum.HumanoidStateType girdiğinde yangın çıkar
Bir Humanoid üzerinde çalışan hızda değişiklikler olduğunda ateş eder.
Bir Humanoid ya oturuyor veya kalkıyor, bir Seat ya oturuyor veya kalkıyor veya bir VehicleSeat ya oturuyor veya kalkıyor.
Humanoid durumu değiştiğinde ateş eder.
Humanoid:SetStateEnabled() 'de çağrıldığında ateş eder. Humanoid üzerinde.
Humanoid veya StrafingNoPhysics``Enum.HumanoidStateType girdiğinde yangın çıkar
Bir Humanoid ın suda yüzdüğü hız değiştiğinde ateş eder Terrain suda yüzerken.
Bir insansızın uzuvlarından biri başka biriyle temasa geçtiğinde ateş eder BasePart .
Özellikler
AutoJumpEnabled
AutoJumpEnabled, Humanoid 'nin bir engeli aşmaya çalışıp çalışmayacağını belirler; yürüdüğü engeli otomatik olarak atlayacak mı?
Şu anda, bu özellik yalnızca aşağıdaki koşullar doğru olduğunda çalışır:
- Humanoid'in karakter modeli bir Player.Character 'nin Player 'sidir.
- Soru sorulan oyuncu dokunma denetimlerkullanıyor.
Bir oyuncunun karakteri oluştuğunda, özelliğin değeri oyuncunun Player.AutoJumpEnabled özelliğine eşit olur - ki bu da StarterPlayer.AutoJumpEnabled özelliğine eşit olur.
Kod Örnekleri
This code sample is meant for a TextButton. It allows the player to toggle the auto-jumping behavior while on a mobile device.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()
AutoRotate
Otomatik Döndürme özelliği, Humanoid'in hareket ettiği yönde otomatik olarak dönecek olup olmadığını tanımlar.Doğru ayarlanırsa, karakter modeli yavaş yavaş hareket yönüyle yüz yüze gelmeye başlayacaktır, insansız dolaşırken.Yanlış olarak ayarlanırsa, karakter modeli HumanoidRootPart 'e döndürülen bir güç uygulanmadığı sürece mevcut dönüşünde sabit kalacaktır.
Karakter modeli bir oyuncunun karakteri olursa, Humanoid'in dönüş davranışı, KullanıcıOyunAyarları'nın DöndürmeTürü özelliği tarafından etkilenir.
Otomatik Döndürme özelliği true olarak ayarlanırsa, RotateType özelliğinin Humanoid'in dönüşünde aşağıdaki etkileri vardır:
<th>Davranış</th><th>Kontekst</th></tr></thead><tbody><tr><td>HareketRelatif</td><td /><td /></tr><tr><td>Kameraİlişkisi</td><td>Karakter, kameranın yönüne doğru dönecek.</td><td>Oyuncu ilk şahıs için kamerasını yakınlaştırdı veya değişim kilidi modundadır.</td></tr></tbody>
Döndürme Türü |
---|
Kod Örnekleri
This script adds the functionality of a button to a part, which switches the AutoRotate property of whoever touches it.
local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR
AutomaticScalingEnabled
Humanoid'in BodyDepthScale , BodyHeightScale , BodyProportionScale , BodyTypeScale , BodyWidthScale , HeadScale dahil altı çocuk ölçek değeri vardır.Bu nedenlerden herhangi birinin değerini değiştirmek, karakterin vücut parçalarının ve aksesuarlarının boyutunu değiştirmesine neden olur, ancak yalnızca AutomaticScalingEnabled doğruysa.
BreakJointsOnDeath
İnsansızın eklemlerinin Enum.HumanoidStateType.Dead durumunda kırılıp kırılmadığını belirler. Varsayılan değer doğrudur.
CameraOffset
KameraOffset özelliği, kameranın konu konumuna bir ofset belirtir, bu ofset kameranın bu konumuna ayarlandığında.
Ofset, Hümanoid'in HumanoidRootPart yönüne göre nesne uzayında uygulanır.Örneğin, bir ofset Vector3 değeri (0, 10, 0) ofseti oyuncunun kamerasını oyuncunun hidroskopunun 10 metre üzerine çeker.
Kod Örnekleri
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
DisplayDistanceType
The Görüntü Mesafesi Türü özelliği, insansız adının ve sağlık görüntüsünün mesafe davranışını kontrol eder.Bu özellik, üç mevcut değere sahip Enum.HumanoidDisplayDistanceType enum kullanılarak ayarlanır ve her biri kendi kurallarına sahiptir:
- Viewer olarak ayarlanırsa, insansız insanoid kendi NameDisplayDistance ve HealthDisplayDistance menzilindeki diğer insanoidlerin adını/sağlığını görür.
- Subject olarak ayarlanırken, insansız insanoid kendi adı ve sağlık görüntüsü üzerinde tüm kontrolü alır NameDisplayDistance ve HealthDisplayDistance değerleri aracılığıyla.
- None olarak ayarlanırsa, insansızın adı ve sağlık çubuğu her durumda görünmez.
Karakter isimlerinin ve sağlık çubuklarının görünümünü kontrol etme konusunda derin bir rehberlik için Karakter İsmi/Sağlık Görüntüsü bakınız.
Kod Örnekleri
This example demonstrates how to set a Humanoid's Humanoid.DisplayerDistanceType, Humanoid.HealthDisplayDistance, and Humanoid.NameDisplayDistance properties. These properties determine how a humanoid's healthbar and name are rendered for a player.
First, we change the DisplayDistanceType to Viewer using Enum.HumanoidDisplayDistanceType. When set to viewer, the humanoid's Name and healthbar will be displayed based on the distance settings of the humanoid viewing them.
Then, the humanoid's HealthDisplayDistance is set to 0. Setting the property to 0 hides the healthbar completely. It is not displayed at any distance.
Finally, the humanoid's NameDisplayDistance is set to 100. This means that the humanoid's name will be visible to other humanoid's within 100 studs.
This example should work as expected when placed inside a Script that is a child of the humanoid.
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
DisplayName İnsansız'ın adını görüldüğünde görüntüleyen bir özelliktir.Varsayılan olarak, yeni bir Humanoid'in boş bir dizideğeri olacaktır.Eğer DisplayName boş bir diziise, insansızın adı gösterimi insansızın ebeveyninin adına varsayılan olarak değişecektir.
Oyuncu Karakteri Yükleme
Oyuncular karakterlerini yüklediklerinde, otomatik olarak veya LoadCharacter() kullanarak, motor tarafından oluşturulan Humanoid'in DisplayName özelliği oyuncunun DisplayName özelliğine ayarlanacaktır.
Başlangıç Karakter ve Başlangıç İnsanoidi
Bir Humanoid adında StarterHumanoid olan bir StarterPlayer ebeveyn verildiğinde, veya bir İnsansız bir Model adında StarterCharacter mevcut olduğunda, Karakterlerin oyuncular tarafından oyunda yüklendiğinde DisplayName özelliği saygı görecektir.Motor sadece özelliğini Humanoid'in özelliği ile geçersiz kılacak ve özelliğinin boş bir diziolması durumunda oyuncunun özelliğini geçersiz kılacaktır.
EvaluateStateMachine
FloorMaterial
Bu, şu anda ayakta olan üzerinde duran bir okuma yalnızca özelliğidir ve açıklar.Her ikisiyle de düzenli Parts ve Terrain vokslarla çalışır.
Aşağıdaki kod örneği, bu özellik Object:GetPropertyChangedSignal() kullanarak değiştiğinde nasıl dinleneceğini gösterir.Humanoit üzerinde durduğu malzeme değiştiğinde, yeni malzemenin durduğunu gösteren bir mesaj basacaktır.
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
Uyarılar
- Humanoid yerinde durmuyorsa, bu özelliğin değeri Hava olarak ayarlanacaktır.
- Bunun nedeni, Enum özelliklerinin boş bir değere sahip olmayabilmesidir.
- Bir parçanın malzemesi havaya ayarlandığında bazı karışıklıklara neden olabilir, ancak pratikte parçalar ilk dünyabu malzemeyi kullanmak zorunda değildir.
- Humanoid 'in karakter modeli zemine çarpabilmeli veya tespit edilmeyecektir.
- Humanoid ile bu özellikle yüzdüğünü test edemezsiniz. Bunun yerine Humanoid:GetState() işlevini kullanmalısınız.
Health
Bu özellik, Humanoid 'nin mevcut sağlığını temsil eder.Değer 0 ile MaxHealth arasındaki menzile sınırlıdır.Humanoit ölürse, bu özellik sürekli olarak 0'a ayarlanır.
Not that the TakeDamage() function may be used to subtract from Health instead of setting the property directly.
Sağlık Yenilenmesi
Varsayılan olarak, pasif bir sağlık yenileme senaryosu otomatik olarak insanoidlere eklenir.Bu, ölü olmayan oyuncu karakterlerinin her saniye 1% MaxHealth yenilenmesine neden olur.Bu yenileme davranışını devre dışı bırakmak için, Script adlı boş bir **** ekleyin StarterCharacterScripts .
Sağlık Barı Görüntüleme
daha az olduğunda, deneyimde bir sağlık çubuğu görüntülenir.Sağlık çubuğunun görüntü davranışı HealthDisplayDistance ve HealthDisplayType 'ye bağlıdır.
Karakter isimlerinin ve sağlık çubuklarının görünümünü kontrol etme konusunda derin bir rehberlik için Karakter İsmi/Sağlık Görüntüsü bakınız.
Ölüm
Karakterin sağlığının değeri 0'a ulaştığında, Humanoid otomatik olarak Enum.HumanoidStateType.Dead durumuna geçer.Bu durumda, Health 0'a kilitlenir; ancak, ölü bir insansızın Health pozitif sıfır değere ayarlanması için bir hata veya uyarı yoktur.
HealthDisplayDistance
Bu özellik, bir insansızın sağlık çubuğunun görülebildiği mesafeyi kontrol etmek için DisplayDistanceType özelliği ile birlikte kullanılan bir sayıdır.
Karakter isimlerinin ve sağlık çubuklarının görünümünü kontrol etme konusunda derin bir rehberlik için Karakter İsmi/Sağlık Görüntüsü bakınız.
HealthDisplayType
Bu özellik, bir insansızın sağlık çubuğunun görüntülenmesine izin verilecek zamanı kontrol eder.Varsayılan olarak, bu özellik olarak ayarlanır, ki bu da sağlık çubuğunun yalnızca bir insansızın 'sinden daha az olduğunda görüntülenmesini sağlar.Ayrıca sağlık çubuğunu daima görüntülemesini sağlayan AlwaysOn veya hiç görüntülenmemesini engelleyen AlwaysOff olarak ayarlanabilir.
Bu özellik, belirli mesafelerde sağlık çubuğunun kaybolmasından sorumlu insansız özelliğin HealthDisplayDistance özelliğinden bağımsız çalıştığını unutmayın.Eğer olarak ayarlanırsa, nasıl konfigür edilirse yine de kaybolacaktır.
Karakter isimlerinin ve sağlık çubuklarının görünümünü kontrol etme konusunda derin bir rehberlik için Karakter İsmi/Sağlık Görüntüsü bakınız.
HipHeight
Yerden (çivilerle) uzaklığı belirler RootPart insanoid durduğunda insanoidin durması gereken mesafe.The RigType bu özelliğin davranışını etkiler.
R15 ekipmanları için, uygun bir kalça yüksekliği önceden ayarlandı, böylece RootPart yüksekliğinin doğru olduğundan emin olun.Bacakların yüksekliği kullanılmaz.Humanoitin genel yüksekliği aşağıdaki formülle tanımlanabilir:
Height = (0.5 * RootPart.Size.Y) + HipHeight
R6 ekipmanları için, HipHeight yerine mutlak bir ofset açıklar. İnsansızın genel yüksekliği aşağıdaki formülle tanımlanabilir:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Eğer true , Humanoid değeriyle eşit bir yukarı doğru güçle atlayacaktır veya Humanoid.JumpPower 'in yüksekliğine veya Humanoid.JumpHeight 'in yüksekliğine bağlı olarak, değerden bağımsız olarak Humanoid.UseJumpPower .
JumpHeight
Bir Humanoid atlama için yüksekliğin kontrolünü sağlar, metrelerde.Bu özelliğin başlangıç değeri, 7.2'ye varsayılan StarterPlayer.CharacterJumpHeight değeriyle belirlenir.
Bu özelliği 0 olarak ayarlamak, insansızın atlamasını etkili bir şekilde engelleyecek olsa da, Enum.HumanoidStateType.Jumping durumunu devre dışı bırakarak atlamayı devre dışı bırakmak önerilir Humanoid:SetStateEnabled() .
Bu özellik yalnızca Özellikler penceresinde görünebilir, çünkü başka bir şekilde önemli olmayacaktır (bunun yerine kullanılır).
JumpPower
Zıplarken Humanoid üzerine ne kadar yukarı kuvvet uygulanacağını belirler.Bu özelliğin başlangıç değeri, 50'ye varsayılan StarterPlayer.CharacterJumpPower değeri tarafından belirlenir ve 0 ile 1000 arasında sınırlanır.Zıplamaların da yerçekimi nedeniyle hızlanmayı belirleyen Workspace.Gravity özelliğinin etkisi altında olduğunu unutmayın.
Bu özelliği 0 olarak ayarlamak, insansızın atlamasını etkili bir şekilde engelleyecek olsa da, Enum.HumanoidStateType.Jumping durumunu devre dışı bırakarak atlamayı devre dışı bırakmak önerilir Humanoid:SetStateEnabled() .
Bu özellik yalnızca Özellikler penceresinde görünebilir, çünkü başka bir şekilde önemli olmayacaktır (bunun yerine kullanılır).
MaxHealth
Bir insansızın maksimum değeri Health .
Bu özelliğin değeri, varsayılan sağlık çubuğu görüntüsünü boyutlandırmak için Health özelliği ile birlikte kullanılır.Bir insansızın Health ı bir MaxHealth e ulaştığında, sağlık çubuğu onun HealthDisplayType özelliklerine bağlı olarak görüntülenmeyebilir.
MaxSlopeAngle
Bu özellik, bir insansızın tırmanabileceği maksimum eğilme açısını belirler.Eğilimin açısı bir insansızın MaxSlopeAngle'inden daha büyükse, eğilim aşağı kayacaktır.
Bir karakter oluştuğunda, bu özellik StarterPlayer.CharacterMaxSlopeAngle değerine göre ayarlanır.
Bu özelliğin değeri 0° ile 89° arasındaki değerlere sınırlıdır.Varsayılan değeri 89°'dir, böylece insansızlar varsayılan olarak istedikleri herhangi bir eğime tırmanabilir.
Kod Örnekleri
The example below demonstrates the effect of the MaxSlopAngle property by limiting the maximum slope the Players.LocalPlayer can walk up to 30°. The local player will slide down any slope greater than 30°.
This code below works as expected when placed in a LocalScript.
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
Hareket Yönü bir birim vektörü veya sıfır uzunluk vektörü olarak yürüdüğü yönü tanımlayan okunur sadece özelliktir.Yön dünya uzayında tanımlanır.
Bu özellik yalnızca okunur olduğundan, bir Script veya LocalScript tarafından ayarlanamaz.
Kod Örnekleri
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
NameDisplayDistance
İsimGörüntüleme Mesafesi özelliği, bir insansızın adının görülebildiği mesafeyi kontrol etmek için Humanoid.DisplayDistanceType özelliği ile birlikte kullanılan bir sayıdır.
Karakter isimlerinin ve sağlık çubuklarının görünümünü kontrol etme konusunda derin bir rehberlik için Karakter İsmi/Sağlık Görüntüsü bakınız.
NameOcclusion
Bir insansızın adının ve sağlık çubuğunun duvarların veya diğer nesnelerin arkasında görülebileceğini kontrol eder.Bu özellik bir Enum.NameOcclusion değeridir ve tüm isimleri, düşman isimlerini veya kapatmayı tamamen devre dışı bırakmak için yapılandırılabilir.
LocalPlayer 'nin onunla ilişkili bir Humanoid 'ye sahip olmadığı durumlarda, bu özellik yerine konuya uygulanır Humanoid .
Karakter isimlerinin ve sağlık çubuklarının görünümünü kontrol etme konusunda derin bir rehberlik için Karakter İsmi/Sağlık Görüntüsü bakınız.
Kod Örnekleri
In the below example, Player|Players will not be able to see each other's Player.Character names when they are obscured behind BasePart|BaseParts.
local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlatformStand
Humanoid şu anda Enum.HumanoidStateType.PlatformStanding durumunda olup olmadığını belirler.Gerçek olduğunda, Humanoid serbest düşüyor ve hareket edemiyor olduğu bir durumdadır.Bu durum, insanoid'in durumdan özgürleşmesini engelleyen atlamanın dışında oturmaya benzer davranır.
RequiresNeck
Geliştiricilerin Neck'in kaldırılması veya geçici olarak bağlantı kesilmesi durumunda bir oyuncunun ölmesini devre dışı bırakmasına izin verir.Bu özellik true olarak varsayılır.
RigType
RigType bir Humanoid miras R6 karakter kolu veya daha yeni R15 karakter kolu kullanıp kullanmadığını tanımlar.
R6 ekipmanı 6 görünür Parts kullanırken, R15 ekipmanı 15 görünür Parts kullanır.R15 ekipmanları, R6 ekipmanlarından daha fazla eklem bulundurduğundan, animasyon sırasında çok daha çok yönlü hale geliyorlar.
Bu özellik yanlış ayarlanırsa, Humanoid düzgün çalışmayacaktır.Örneğin, bir R15 insanoid'in RigType 'si R6 olarak ayarlanırsa, ölecektir, çünkü 'a bağlı bir Torso 'a çağrılan Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir Baş 'a bağlı bir İnsanoid'in RigType 'i R6 olarak ayarlanırsa, 'a bağlı bir İnsanoid'in RigType 'a bağlı bağlı bağlı bir insanoid'a bağlı bir insanoid'in RigType 'a bağlı bir 'a bağlı bir insanoid'in RigType 'a bağlı bağlı bir insanoid'a bağlı bağlı bağlı bağlı bağlı insanoid'a bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağlı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağı bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ bağ ba
RootPart
İnsansızın İnsanoidRootPart nesnesine bir referans, bir insansızın 3B dünyadaki hareketini kontrol eden Humanoid kök sürücü parçası.Bu bölüm normalde görünmez.
R15 karakterler için, Model.PrimaryPart modelinin Player.Character kısmı İnsansız Kök Parçasına ayarlandı.
R6 karakterleri için, Model.PrimaryPart bölümü Head bölümüne ayarlanır.
SeatPart
SeatPart, bir Humanoid şu anda oturduğu koltuğa referanstır, eğer varsa.Bu özelliğin değeri bir Seat veya bir VehicleSeat olabilir.Humanoid şu anda bir koltukta oturmuyorsa sıfır olacaktır.
Not:
- Humanoid şu anda oturuyor mu yoksa oturmuyor mu tanımlayan bir bool için, bakın Humanoid.Sit
Sit
Otur özelliği, Humanoid'nin şu anda oturup oturmadığını gösteren bir boolean değerdir.Humanoids Bu özelliğin değerini doğruya ayarlayarak oturan bir duruma zorlanabilir bu özelliğin değeri doğruya ayarlanabilir.Oturma durumundayken Humanoid bağlı olmadığında, bacaklarında çarpışma olmadan yolun üzerinden atlayacaktır.Bir Humanoid oturma durumundan atlayarak kaçabilir.
Not:
- The Seat veya VehicleSeat the Humanoid oturuyor olabilir kullanarak özellik Humanoid.SeatPart edinilebilir
- Bir Humanoid'in Humanoid.Seated etkinliğine bağlanarak oturduğunu tespit etmek mümkündür.
TargetPoint
Bu özelliği kullanmayın Bu özellik sadece deneysel mod etkinleştirilmiş olarak çalışıyor, ki bu tümüyle durduruldu.
Bu özellik, bu öğeyi kontrol eden 3B uzaydaki bir konumu tanımlar, donanımlı bir ile son kez tıklanmıştı.
Bu özellik, bir insansızın bir aracı etkinleştirdiğinde hedeflediği şeyi belirlemek için öncelikle klasik araçlar tarafından kullanılır.Bir NPC'ye klasik bir roket fırlatıcısı verirseniz, Hedef Noktası nı ayarlayın ve ardından araçın Tool:Activate() fonksiyonunu çağırın, NPC hedef noktasına bir roket ateş edebilir.
UseJumpPower
Bir karakter oluştuğunda, bu özellik, varsayılan olarak doğru olan StarterPlayer.CharacterUseJumpPower değerine göre ayarlanır.
Zıplarken, bu değeri doğru olarak ayarlayarak, Humanoid.JumpHeight değeri insansız zıplamaların o yüksekliğe ulaşmasını sağlamak için kullanılır.Bu değeri yanlış olarak ayarlayarak, Humanoid.JumpPower değeri bir yukarı güç uygulamak için kullanılır.
WalkSpeed
Bu özellik, Humanoid 'nin saniye başına kaç tane adım yürümetanımlar.Varsayılan değer StarterPlayer.CharacterWalkSpeed (16) olur, yani bir oyuncu karakteri her saniye herhangi bir yönde 16 damga hareket edebilir.
Notlar
- Bir mobil cihazda veya oyun kolu üzerinde kontrol edildiğinde, bir insansız insan daha yavaş yürüyebilir, çünkü kontrol çubuğu merkezden sadece yavaşça hareket ederse WalkSpeed.
- Bir insansızı yerinde dondurabilirsiniz, bunun için WalkSpeed 0'a ayarlayabilirsiniz; bu, kontrol eden oyuncunun onu varsayılan hareket mekanizmaları aracılığıyla hareket ettirmesini engeller.
- Varsayılan animasyon senaryosu, bir insansızın hareket animasyonlarını 16 mil/saniye'lik varsayılan hıza göre ne kadar hızlı hareket ettiğine göre ölçer.
WalkToPart
WalkToPart, Humanoid'in ulaşmaya çalıştığı bir parçaya referans verir.Bu özellik, bir parça Humanoid'in Humanoid:MoveTo() fonksiyonunun 2. argümanı olarak geçtiğinde normalde ayarlanır.
WalkToPart ayarlandığında ve bir insansız aktif olarak parçanın konumuna ulaşmaya çalışıyorsa, Vector3 hedefini parçanın konumu olarak tutacak, artı parçanın dönüşüyle ilgili nesne uzayında çevrilen Humanoid.WalkToPoint .
Bu Luau'da şöyle tanımlanabilir:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
Uyarılar
- WalkToPart değerini ayarlamak, bir insansızın bir parçanın ardından takip etmesini sağlamak için yeterince yeterli değildir.
- Humanoid, WalkToPoint değeri değiştirildiğinde bir hedefe ulaşmaya çalışmaya başlaması istendi.
- Bunun gelecekte değiştirilebilir.
- Bir insansızın hedefe ulaşma durumu, hedefine ulaşmazsa 8 saniye sonra süresi dolacak.
- Bu, NPC'lerin ateşlenmesini beklemek için sıkışmaması için yapılır Humanoid.MoveToFinished .
- Bunun gerçekleşmesini istemiyorsanız, süre sınırı sürekli yenilenmesi için MoveTo'yu tekrar tekrar çağırmalısınız.
WalkToPoint
WalkToPoint, bir insansız tarafından ulaşmaya çalışılan uzaydaki 3B konumu tanımlar, İnsansız'ın Humanoid:MoveTo() fonksiyonu tarafından uyarıldıktan sonra.
Bir insansızın Humanoid.WalkToPart 'si ayarlanırsa, hedef parça konumu ve dönüşüyle ilgili olarak WalkToPoint'e dönüştürülerek ayarlanır.WalkToPart ayarlandığında, insansız bir robot doğrudan WalkToPoint tarafından belirtilen 3B konuma ulaşmaya çalışacaktır.
Uyarılar
- Humanoit'in ona doğru yürümeye başlaması için değerinin WalkToPoint'a farklı bir değere değiştirilmesi gerekir.
- Bir insansız yürüyüş 0,0,0 yapmak istiyorsanız, Humanoid'in MoveTo işlevini kullanmalısınız.
- Bunun gelecekte değiştirilebilir.
- Bir insansızın hedefe ulaşma durumu, hedefine ulaşmazsa 8 saniye sonra süresi dolacak.
- Bu, NPC'lerin ateşlenmesini beklemek için sıkışmaması için yapılır Humanoid.MoveToFinished .
- Bunun gerçekleşmesini istemiyorsanız, süre sınırı sürekli yenilenmesi için MoveTo'yu tekrar tekrar çağırmalısınız.
Kod Örnekleri
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
Yöntemler
AddAccessory
Bu yöntem, belirtilen Accessory 'yi insansızın ebeveynine bağlar.
Bu yöntem çağrıldığında, bir insanoid'in aynı adı paylaşan bir ebeveyninde bir aranarak karaktere bir eklenir. El ele tutuşunun kısmında bir aksesuarın kısmında aynı adı paylaşan bir insanoid'in ebeveyninde bir .Biri bulunursa, Tutuş bölümü Attachment bir Weld kullanarak ebeveynine bağlanacak ve kaynak yapılandırılacak, böylece Attachments aynı alanı kaplayacak.
Gerekli Attachment bulunamıyorsa, Accessory insanoid'in ebeveynine bağlı kalacak, ancak bağlantı kesilecektir.
Genellikle, aksesuar kaynakları sunucuda oluşturulur, ancak belirli koşullar altında istemci üzerinde oluşturulabilir.Bu durumlarda, istemci tarafı çağrıları AddAccessory() her zaman istenen davranışı üretmeyebilir ve beklenen kaynak yaratımzorlamak için BuildRigFromAttachments() kullanabilirsiniz.
Parametreler
Dönüşler
Kod Örnekleri
This script generates the "Clockwork's Shades" Accessory from scratch, and then attaches it to the player's character using Humanoid.AddAccessory You should paste this code into a regular script, and then parent it inside of the StarterPlayer's StarterCharacterScripts folder.
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local clockworksShades = Instance.new("Accessory")
clockworksShades.Name = "ClockworksShades"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1.6, 1)
handle.Parent = clockworksShades
local faceFrontAttachment = Instance.new("Attachment")
faceFrontAttachment.Name = "FaceFrontAttachment"
faceFrontAttachment.Position = Vector3.new(0, -0.24, -0.45)
faceFrontAttachment.Parent = handle
local mesh = Instance.new("SpecialMesh")
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(1, 1.3, 1)
mesh.MeshId = "rbxassetid://1577360"
mesh.TextureId = "rbxassetid://1577349"
mesh.Parent = handle
humanoid:AddAccessory(clockworksShades)
BuildRigFromAttachments
Bu yöntem, Motor6D için bir Humanoid bağlantı ağacı oluşturur. Motor6D bağlantıları, Animations oynatma için gereklidir.
Humanoid'in RootPart 'sinden başlayarak, bu yöntem mevcut parçanın adı ile biten tüm Attachments ebeveynlerini toplar RigAttachment .Ardından aynı adı paylaşan karakterde eşleşen bir ek dosya arar.Bu iki ekipmanı kullanarak, iki ekipmanla ilişkili parçalara dayanarak bir Motor6D ortak oluşturulur ve ekipmanların CFrame 'sı.
Humanoid:BuildRigFromAttachments() ayrıca karakteri ölçeklendirir ve vücut renklerini ayarlar.
Dönüşler
Kod Örnekleri
A Lua port of the Humanoid's BuildRigFromAttachments function, so that the recursive behavior of the function can be seen.
local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
A script that generates an R15 character from scratch using a package's assetId.
local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace
ChangeState
Bu yöntem, Humanoid 'nin verilen Enum.HumanoidStateType 'e girmesine neden olur, aktiviteyi tanımlar Humanoid şu anda yapıyor.
Lütfen belirli devletler hakkında daha fazla bilgi için Enum.HumanoidStateType sayfasını inceleyin, çünkü bazılarının mantıksız isimleri var.Örneğin, Enum.HumanoidStateType.Running insanoid'in bacaklarının yerde olduğu bir durumu tanımlar, bunlar arasında sabit durum da dahil.
Humanoid 'nin varsayılan davranışı nedeniyle, bazı devletler otomatik olarak değiştirilecek. Örneğin:
- Humanoit suda olmadığında durumu Enum.HumanoidStateType.Swimming olarak ayarlamak, otomatik olarak Enum.HumanoidStateType.GettingUp olarak ayarlanmasına neden olacaktır.
- Kullanılmadığı için, durumu Enum.HumanoidStateType.PlatformStanding olarak ayarlamak, insansız durumun otomatik olarak Enum.HumanoidStateType.Running olarak ayarlanmasına neden olacaktır.
Bu yöntem kullanılarak durumunu ayarlamak için, bunu bir 'dan yapmalı ve istemci ağ sahipliğine sahip olmalıdır.Alternatif olarak, bu yöntemi bir sunucu tarafından Script çağırabilirsiniz, ancak sunucunun oyuncu karakterinin ağ sahibi olması gerekir.
Ayrıca bakın Humanoid:SetStateEnabled() belirli bir durumu etkinleştirmek veya devre dışı bırakmak ve Humanoid:GetState() mevcut insansız durumu almak için.
Parametreler
Yapılacak olan Enum.HumanoidStateType ın Humanoid olduğu.
Dönüşler
Kod Örnekleri
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
EquipTool
Bu yöntem, verilen Humanoid 'yi donatır Tool.
Aşağıdaki örnek, 'Araç' adlı bir aleti donatmak için bir neden olurdu.
local Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local player = Players:FindFirstChildOfClass("Player")if player and player.Character thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = Workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
Bu yöntem çağrıldığında, Humanoid önce otomatik olarak sahip olduğu tüm Tools çıkaracaktır.
Donanımlı olmalarına rağmen, için kullanılırsa, bu yöntem onları donatmak için kullanılırsa veya değilse, tutamaçları yoksa bu işlev çalışmayacaktır.
Ayrıca bakın:
- Aletleri çıkarmak için Humanoid:UnequipTools() kullanın
Parametreler
Dönüşler
GetAccessories
Bu yöntem, insansızın ebeveyninin şu anda giydiği bir dizi Accessory nesneyi döndürür.Tüm bu Accessory nesneler dahil edilecek, bağlı olup olmadıklarına bakılmaksızın.
Eğer Humanoid 'nin hiç Accessory nesnesi yoksa, boş bir dizi döndürülecektir.
Ayrıca bakın Humanoid:AddAccessory() bir insansızın ebeveynine bir Accessory eklemek için.
Dönüşler
Kod Örnekleri
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
GetAppliedDescription
Bu yöntem, insansızın önbelleğe alınmış HumanoidDescription görünümünü tanımlayan bir kopyasını döndürür, ki bu onun mevcut görünümünü tanımlar.Bu, bir karakterin görünümünü hızlı bir şekilde belirlemek ve görünümlerini Humanoid:ApplyDescription() yöntemi kullanarak diğer karakterlere atamak için kullanılabilir.
Ayrıca bakın
- Players:GetHumanoidDescriptionFromUserId() ki geçen kullanıcı için avatarı tanımlayan bir HumanoidDescription döndürür
- Players:GetHumanoidDescriptionFromOutfitId() ki bu, geçen sunucu tarafı kıyafet özelliğine eşleşmek üzere parametreleri başlatılan bir HumanoidDescription döndürür
- Player:LoadCharacterWithHumanoidDescription() ki bir oyuncu ile görünümü gönderilen HumanoidDescription 'den oluşturur.
Dönüşler
GetBodyPartR15
Bu yöntem, Enum.BodyPartR15 bir Part parçası değilse veya Enum.BodyPartR15.Unknown parça bir R15 vücut parçası değilse, ne olduğunu döndürür.Bu yöntem, geliştiricilerin gerçek vücut parçası isimlerinden bağımsız olarak oyuncu vücut parçalarını almasına izin verir, bunun yerine bir dizi döndürür.
Humanoid:ReplaceBodyPartR15() ile birlikte kullanılabilir.Örneğin, bir oyuncunun vücut parçası bir şeye dokunursa, bu işlev bir parça durumdöndürür.Geliştiriciler daha sonra baş veya kol gibi vücudun hangi bölümünü incileyebilir.Sonra bu parçanın ne olduğuna bağlı olarak, geliştiriciler bazı oyun eylemleri gerçekleştirebilir veya bu parçayı başka bir parça ile değiştirebilir - belki hasar gösterir.
Bu yöntem, vuruş konumunun önemli olduğu oyunlar için yararlı olabilir.Örneğin, bir oyuncunun bacağına vurulduğunu belirlemek ve ardından yaralanmaya göre yavaşlatmak için kullanılabilir.
Parametreler
Belirtilen parça, bir R15 vücut parçası olup olmadığını görmek için kontrol ediliyor.
Dönüşler
Belirtilen parçanın R15 vücut parça türü veya parça bir vücut parçası değilse bilinmiyor.
GetLimb
Bu yöntem, verilen Enum.Limb ile ilişkili olan Part enum'u döndürür. Örneğin hem R15 hem de R6 aygıtları için çalışır:
-- R15 içinprint(humanoid:GetLimb(character.LeftUpperLeg)) -- Enum.Limb.LeftLeg [İngilizce]print(humanoid:GetLimb(character.LeftLowerLeg)) -- Enum.Limb.LeftLeg [İngilizce]print(humanoid:GetLimb(character.LeftFoot)) -- Enum.Limb.LeftLeg [İngilizce]-- R6 içinprint(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
Parçanın ebeveyni insanoid'in ebeveynine ayarlanmazsa Humanoid:GetLimb() bir hata atacağını unutmayın.
Parametreler
Dönüşler
Kod Örnekleri
Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
Bu yöntem, insansızın mevcut Enum.HumanoidStateType , şu anda yaptığı aktiviteyi tanımlayan Humanoid , örneğin atlama veya yüzme gibi, geri verir.
Ayrıca bakınız Humanoid:SetStateEnabled() belirli bir durumu etkinleştirmek veya devre dışı bırakmak ve Humanoid:ChangeState() mevcut insansız durumu değiştirmek için.
Dönüşler
Mevcut Enum.HumanoidStateType 'nin Humanoid 'sı.
Kod Örnekleri
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
GetStateEnabled
GetStateEnabled yöntemi, bir Enum.HumanoidStateType 'nin Humanoid için etkinleştirilip etkinleştirilmediğini döndürür.
Humanoid durumu, insansızın şu anda yaptığı aktiviteyi tanımlar.
Belirli bir Enum.HumanoidStateType özelliği devre dışı bırakıldığında, insansız asla bu duruma giremez.Durumu değiştirme girişimi Humanoid:ChangeState() veya Roblox içi insansız kod kullanılarak yapılırsa bile bu doğrudur.
Ayrıca bakın:
- Bir insansız durum etkinleştirildiğinde veya devre dışı bırakıldığında ateşlenen bir olay için bakın Humanoid.StateEnabledChanged
- Bir Humanoid durumunu etkinleştirmek veya devre dışı bırakmak için Humanoid:SetStateEnabled()
Parametreler
Verdiğin Enum.HumanoidStateType .
Dönüşler
Verilen Enum.HumanoidStateType etkinleştirilmiş olup olmadığı.
Kod Örnekleri
The code below sets the value of the humanoid jumping state to false using Humanoid:SetStateEnabled() and then retrieves and prints the value of this state (false) using Humanoid:GetStateEnabled().
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
Bu yöntem, verilen Humanoid yönünde yürümesine neden olur Vector3 .
Varsayılan olarak, yön dünya koşullarolsa da, çıkış değeri ise yön, 'in çıkışına göre olur.Negatif Z yönü Roblox'ta "ileri" olarak kabul edildiğinden, aşağıdaki kod insansızın CurrentCamera yönünde yürümesini sağlayacaktır.
humanoid:Move(Vector3.new(0, 0, -1), true)
Bu yöntem çağrıldığında, Humanoid yöntemi tekrar çağrılana kadar hareket edecektir.Ancak, bu yöntem bir sonraki çerçevede Roblox'un varsayılan karakter kontrol senaryosu tarafından üzerine yazılacaktır.Bu, bu işlevi her kare çağırarak RunService:BindToRenderStep() (örneğe bakın) veya kontrol senaryolarını StarterPlayerScripts üzerine yazıp önleyerek önlenebilir.
Bu yöntem sunucuda çağrılabilir, ancak bunun yalnızca insansızın montajının ağ sahipliğine sahip olduğunda yapılması gerekir network ownership.
Ayrıca bakın Humanoid:MoveTo() bir noktaya yürüyen bir Humanoid ve bu işlevi etkili bir şekilde çağıran Player:Move().
Parametreler
Yürünecek yön.
true eğer moveDirection parametresi CurrentCamera ile ilişkili olarak alınmalıysa ayarlanırsa.
Dönüşler
Kod Örnekleri
This code sample uses the Humanoid:Move() function to make the player's Character walk in the direction of the Camera. RunService:BindToRenderStep() is required here as the default control scripts will overwrite the player's movement every frame.
To run this sample, place it inside a LocalScript parented to StarterCharacterScripts.
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
RunService:BindToRenderStep("move", Enum.RenderPriority.Character.Value + 1, function()
if player.Character then
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid:Move(Vector3.new(0, 0, -1), true)
end
end
end)
MoveTo
Bu yöntem, Humanoid ve Humanoid.WalkToPoint ve Humanoid.WalkToPart özelliklerini ayarlayarak verilen konuma yürümeye çalışmasına neden olur.
konum ve parça parametleri, ve neye ayarlanacağı ile eşleşir.
parça parametri belirtilirse, Humanoid hala noktaya yürümeye çalışacaktır.Ancak, parça hareket ederse, Humanoid noktası aynı konuma taşınacak parçaya göre olacaktır.parçası parametri belirtilmezse, yürüyen pozisyon Humanoid değişmeyecektir.
Bir insansızın hedefe ulaşma durumu, hedefine ulaşmazsa 8 saniye sonra süresi dolacak.Bu, NPC'lerin ateşlenmesini beklemek için sıkışmaması için yapılır Humanoid.MoveToFinished .Bunun gerçekleşmesini istemiyorsanız, süre sınırı sürekli yenilenmesi için MoveTo'yu tekrar tekrar çağırmalısınız.
MoveTo() şu koşullardan herhangi biri uygulanırsa sona erer:
Karakter hedefine ulaşır.
Karakter sıkışır ve sekiz saniyelik zamanlayıcı sona erer.
Değer Humanoid.WalkToPoint veya Humanoid.WalkToPart değişir.
Bir senaryo yeni bir Humanoid:Move() parametre ile çağrır moveDirection yeni bir değer.
Parametreler
Humanoid.WalkToPoint konumunu ayarlamak için.
Başlatmak için BasePart 'yi ayarlayın Humanoid.WalkToPart .
Dönüşler
Kod Örnekleri
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
RemoveAccessories
Bu yöntem, insansızın ebeveyni tarafından giyilen tüm Accessory nesneleri kaldırır. Oyuncu için Characters, tüm şapkaları ve diğer aksesuarları kaldıracaktır.
Bu yöntem, onlara Accessory çağırarak Instance:Destroy() nesneyi kaldırır, yani aksesuarların Parent kısmı nil olarak ayarlanır ve kilitlenir.
Ayrıca bakın Humanoid:AddAccessory() bir Accessory 'e bağlanmak ve bir Humanoid:GetAccessories() 'e ait tüm Accessory nesneleri almak için Humanoid .
Dönüşler
Kod Örnekleri
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
ReplaceBodyPartR15
Dinamik olarak bir R15/Rthro uzuv parçasını bir Insanoid'de farklı bir parça ile değiştirir. Parça normal olarak otomatik olarak ölçeklendirilir.
Bu yöntem, oyun sırasında karakterleri değiştirmek veya bir temel donanımdan karakterler oluşturmak için yararlıdır.İlgili yöntem GetBodyPartR15 bu yöntem kullanılırken yararlı olabilir.
Geçen parçanın adı, geçen BodyPartR15 Enum adına eşleşmelidir.
Parametreler
Değiştirilecek vücut parçası. Enum.BodyPartR15.Unknown başarısız olacak.
Karaktere ebeveyn olacak Class.Part``Class.Instance kişi.
Dönüşler
SetStateEnabled
Bu yöntem, belirli bir Enum.HumanoidStateType 'nin Humanoid için etkinleştirilip etkinleştirilmediğini ayarlar.Belli bir Enum.HumanoidStateType özelliği devre dışı bırakıldığında, Humanoid o duruma asla giremez.Durumu değiştirme girişimi Humanoid:ChangeState() veya Roblox'un iç kodu Humanoid kullanılarak yapılırsa bile bu doğrudur.
Sunucuda SetStateEnabled() kullanmanın, değişikliği istemciye yansıtmadığını veya tersine yansıtmadığını unutmayın.
Parametreler
Etkinleştirilmesi veya devre dışı bırakılması gereken Enum.HumanoidStateType .
true eğer state etkinleştirilmeliyse, false eğer state devre dışı bırakılmalıysa.
Dönüşler
Kod Örnekleri
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
TakeDamage
Bu yöntem, korunmadığı takdirde Class.Humanoid.Health``Class.Humanoid tarafından verilen miktar tarafından azaltır, eğer korunmuyorsa ForceField
Bu yöntem, miktarı için negatif değerleri kabul eder.Bu, insansızın Humanoid.Health 'sini artıracaktır.Ancak bunun etkisi yalnızca mevcut değilse ForceField varsa olacaktır.
ForceFields, TakeDamage'e karşı nasıl korunur
Bir bir 'in birine aşağıdaki kriterlerden birini karşıladığında korunmuş olarak kabul edilir:
- The ForceField ebeveynliği yapılır Class.Humanoid.RootPart``Class.Humanoid için
- The bir atadır bir atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır atadır
Herhangi bir Humanoid mevcut olmasına rağmen bir ForceFields hasara vermek için, doğrudan Humanoid.Health ayarlayın.
Nasıl koruyacağınızla ilgili daha fazla bilgi için sayfasına bakın.
Parametreler
Hasar veya Humanoid.Health 'den indirilecek miktar.
Dönüşler
Kod Örnekleri
This code, put in a LocalScript, would make the local player take 99 damage only if a ForceField wasn't present.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
humanoid:TakeDamage(99)
UnequipTools
Bu yöntem şu anda Tool tarafından donatılan herhangi birini çıkarır Humanoid
Kuşanılmayan Tool , Backpack ile ilişkili Player 'in ebeveyni olacak ve Humanoid ile ilişkili olacak.
Eğer hiçbir Tool donatılmazsa, bu yöntem hiçbir şey yapmayacaktır.
NPC'ler (Oyuncu Olmayan Karakterler) tarafından donatılabilmesine rağmen, bu yöntem sadece eşdeğer ile çalışır.Bunun nedeni, donatılmamış Backpack 'e ebeveyn olmak için bir Tool nesnesinin gerekli olmasıdır.
Ayrıca bakın:
- Bunun yerine bir Tool donatmak yerine, kullan Humanoid:EquipTool()
Dönüşler
Kod Örnekleri
The following sample will bind the U key to unequip any Tool|Tools the Player currently has equipped.
To use this sample, place it inside a LocalScript within StarterPlayerScripts|StarterPlayer.StarterPlayerScripts.
local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local player = Players.LocalPlayer
ContextActionService:BindAction("unequipTools", function(_, userInputState)
if userInputState == Enum.UserInputState.Begin then
if player.Character then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:UnequipTools()
end
end
end
end, false, Enum.KeyCode.U)
ApplyDescription
Bu teslim yöntemi, karakterin görünümünü geçen HumanoidDescription 'a eşleştirir.Geçen HumanoidDescription kopyası, HumanoidDescription için önbelleğe alınır Humanoid.
Bu yöntem, karakterin görünümünü değiştirmek için yalnızca bu yöntemin kullanıldığı varsayımıyla optimize edilir ve çağrılar arasında başka araçlarla değişiklik yapılmaz.Eğer çağrılar arasında karaktere değişiklikler yapılırsa, bu yöntem karakteri doğru bir şekilde yansıtmayabilir HumanoidDescription.Karakteri güncellemenin diğer yollarıyla birlikte bu yöntemi kullanmak istiyorsanız, Humanoid:ApplyDescriptionReset() daima karakterin HumanoidDescription geçirilenden yansıttığından emin olacaktır.
Ayrıca bakın
- Humanoid:GetAppliedDescription() ki şu anda insansıza uygulanan HumanoidDescription geri döndürür
- Players:GetHumanoidDescriptionFromUserId() ki geçen kullanıcı için avatarı tanımlayan bir HumanoidDescription döndürür
- Players:GetHumanoidDescriptionFromOutfitId() ki bu, geçen sunucu tarafı kıyafet özelliğine eşleşmek üzere parametreleri başlatılan bir HumanoidDescription döndürür
- Player:LoadCharacterWithHumanoidDescription() ki bir oyuncu ile görünümü gönderilen HumanoidDescription 'den oluşturur.
Parametreler
Karakterin eşleşmesi için ayarlamak istediğiniz HumanoidDescription Instans.
Dönüşler
ApplyDescriptionReset
Bu teslim yöntemi, karakterin görünümünü, dış değişikliklerden sonra bile, HumanoidDescription geçen görünüme eşleştirir.Geçen HumanoidDescription kopyası, HumanoidDescription için önbelleğe alınır Humanoid.
Bu yöntem, karakterin HumanoidDescription geçtiği değişikliklere rağmen daima karakterin HumanoidDescription sistemini kullanmadığını garanti edecektir (örneğin ApplyDescriptionReset() veya ApplyDescription() kullanmıyor).Bu, optimize edilmiş ApplyDescription() ile çelişir ve karakter HumanoidDescription sistem aracılığıyla değiştirilmişse yanlış bir şekilde HumanoidDescription uygulanabilir.
Parametreler
Karakterin eşleşmesi için ayarlamak istediğiniz HumanoidDescription örneği.
Dönüşler
PlayEmote
EmoteName, HumanoidDescription'ta bulunmadığından emote oynatılamadıysa, bu yöntem bir hata verecektir.Yöntem, ifade başarılı bir şekilde oynandığını belirtmek için gerçek döndürecektir.
Parametreler
oynaacak emote'un adı.
Dönüşler
başarıyla oynandı.
Etkinlikler
Climbing
Bir Humanoid üzerinde yükselen hız değiştiğinde ateş eder.
Humanoids , Parts veya TrussParts dan yapılmış merdivenlerden tırmanabilir.
Humanoids yüzde 70'inde tırmanın Humanoid.WalkSpeed .
Bu olay, Humanoid durduğunda hız 0 ile her zaman ateş etmeyecektir, çünkü tırmanma durdu.
Ayrıca bakın:
- Yüzme ve koşma için Humanoid.Swimming ve Humanoid.Running etkinliklerine bakın
- Ayrıca, bir Humanoid ın Humanoid.StateChanged etkinliğini kullanarak tırmandığını tespit edebilirsiniz
- Humanoid:SetStateEnabled() işlevini kullanarak tırmanmayı devre dışı bırakabilirsiniz
Parametreler
Kod Örnekleri
local Players = game:GetService("Players")
local function onCharacterClimbing(character, speed)
print(character.Name, "is climbing at a speed of", speed, "studs / second.")
end
local function onCharacterAdded(character)
character.Humanoid.Climbing:Connect(function(speed)
onCharacterClimbing(character, speed)
end)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Died
Bu olay, genellikle Humanoid öldüğünde, Humanoid.Health 0'a ulaştığında ateşlenir.Bunun nedeni, başlarını Humanoid.Torso 'dan koparmak veya doğrudan sağlık özelliğini ayarlamak olabilir.
Bu olay yalnızca ın bir altında olması durumunda ateşlenir. Eğer devre dışı bırakılırsa ateşlenmez.
Kod Örnekleri
The code below would print the player's name, followed by "has died!", whenever a player dies. For example, if the player was named "Shedletsky", "Shedletsky has died!" would be printed to the output when they died.
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
print(player.Name, "has died!")
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
FallingDown
FallingDown etkinliği, Humanoid girip FallingDown``Enum.HumanoidStateType .
The Humanoid 3 saniye sonra GettingUp durumu devreye girecek ve FallingDown durumu etkinleştirildikten sonra.Bu olay gerçekleştiğinde, bu etkinlik aktif bir yanlış değeriyle ateşlenecek ve Humanoid.GettingUp da aktif bir değerle ateşlenecek doğru .
Parametreler
girip girmediğini veya çıkıp çıkmadığını tanımlar.
FreeFalling
Bu olay, Humanoid girer veya Freefall``Enum.HumanoidStateType çıkar.
Aktif parametre, Humanoid durumuna girip girmediğini temsil eder veya Freefall durumdan ayrılır.
Bununla birlikte, durumu genellikle yere ulaştığında sona erer, bu olay aktif yalan eşit olduğunda devreye girer, eğer durum düşerken devlet değiştirilirse.Bu nedenle, Humanoid.StateChanged kullanmalı ve bir Landed iniş yaptığında çalışacak Humanoid durumu dinlemelisiniz.
Parametreler
GettingUp
Bu olay, Humanoid girer veya Enum.HumanoidStateType.GettingUp durumdan ayrıldığında, Humanoid girer veya FallingDown (3 saniye) veya Ragdoll (1 saniye) durumlarına yakın bir sürede etkinleştirilen bir geçiş durumu, aktif hale gelir.
Bir geri dönmeye çalıştığında, bu olay önce bir parametresi ile kısa bir süre sonra tekrar bir parametresi ile ateşlenecektir.
Bir Humanoid 'nin düşmesini zorlamak için, Humanoid:ChangeState() fonksiyonunu kullanın ile Enum.HumanoidStateType.FallingDown .
Parametreler
HealthChanged
Bu olay, Humanoid.Health değişiklikleri yapıldığında ateşlenir.Ancak, sağlık Humanoid.MaxHealth 'e eşit veya daha büyük bir değerden artıyorsa ateş etmeyecektir.
When Humanoid.Health sıfıra ulaştığında, Humanoid ölecek ve Humanoid.Died etkinliği ateşlenecek. Bu etkinlik sıfır değeriyle ateşlenecek.
Parametreler
Yeni değer Humanoid.Health .
Kod Örnekleri
The following example determines the change in health, printing it to the output. It will only work in a LocalScript.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
This code sample allows you to create a simple color-changing health bar using two nested Frames. Paste this into a LocalScript on the inner frame.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
Jumping
Bu olay, Humanoid girip Jumping``Enum.HumanoidStateType .
Bir Humanoid atladığında, bu olay bir süre sonra tekrar active bir true parametresi ile ateşlenir, ardından active bir false parametresi ile tekrar ateş eder.Bu ikinci atış bir Humanoid inişine eşleşmiyor; bunun için, Landed``Enum.HumanoidStateType``Class.Humanoid.StateChanged .
Humanoid:SetStateEnabled() işlevini kullanarak atlamayı devre dışı bırakabilirsiniz.
Parametreler
MoveToFinished
Bu olay, ve özellikleri tarafından belirlenen bir hedefe yürümeyi bitirdiğinde ateşlenir.
Humanoid.WalkToPoint ve Humanoid.WalkToPart özellikleri ayrı olarak veya Humanoid:MoveTo() işlevini kullanarak ayarlanabilir.
Eğer Humanoid 8 saniye içinde hedefine ulaşırsa, bu olay ulaştı olarak geri dönecektir.Hedef 8 saniye içinde ulaşmazsa, Humanoid yürümeyi bırakacak ve ulaştı yanlış olacak.Bu süre sınırı, süre sınırı süresi içinde Humanoid:MoveTo() yeniden çağrılarak sıfırlanabilir.
Parametreler
Kod Örnekleri
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
PlatformStanding
Bu olay, Humanoid girer veya PlatformStanding``Enum.HumanoidStateType çıkar.
durumunda olsa da, özelliği gerçek olacaktır .
While Humanoid.PlatformStandtrue olarak ayarlanmışken, Humanoid hareket edemeyecek. Daha fazla bilgi için lütfen Humanoid.PlatformStand sayfasına bakın.
PlatformStand Enum.HumanoidStateType , şu anda devre dışı bırakılan Platform parçasıyla bağlantılıydı. Bununla birlikte, geliştiriciler tarafından hala kullanılabilir.
Parametreler
Ragdoll
Bu olay, Humanoid girer veya Ragdoll``Enum.HumanoidStateType çıkar.
active parametresinin giriş veya ayrılma gösteren değeri true veya false olacaktır.
Ragdoll durumunda kalmak için Humanoid:SetStateEnabled() durumunu devre dışı bırakmak için kullanın.
Ayrıca bakın:
- Humanoid.FallingDown for the Humanoid etkinliği, FallingDown durumuyla benzer davranan, ile bağlantılı Ragdoll
Parametreler
Running
Bu olay, bir Humanoid üzerinde çalışan hızda değişiklikler yapıldığında ateşlenir.
Humanoids çalıştırırken, ortalama olarak, saniye başına çivilerindeki Humanoid.WalkSpeed 'lerini.
When the Humanoid bu etkinliği çalıştırmayı durdurduğunda, bu etkinlik 0 hızla ateşlenecek.
Ayrıca bakın:
- Yüzme ve tırmanma için Humanoid.Swimming ve Humanoid.Climbing etkinliklerine bakın
- Ayrıca, bir Humanoid ın Humanoid.StateChanged etkinliğini kullanarak ne zaman çalıştığını tespit edebilirsiniz
Parametreler
Kod Örnekleri
Demonstrates connecting to the Humanoid.Running event. The event is connected to every player's humanoid that joins.
The function connected will print whether or not the humanoid is running based on the speed.
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onRunning(speed: number)
if speed > 0 then
print(`{localPlayer.Name} is running`)
else
print(`{localPlayer.Name} has stopped`)
end
end
humanoid.Running:Connect(function(speed: number)
onRunning(speed)
end)
Seated
Bu olay, bir Humanoid oturuyor veya bir Seat veya VehicleSeat 'den ayağa kalkıyor olduğunda ateşlenir.
Bir karakter bir koltukla temasa geçtiğinde, koltuğa bağlı olur ve oturma animasyonu oynar.Bununla ilgili daha fazla bilgi için Seat sayfasına bakın.
- Karakter oturuyorsa, active parametri doğru ve currentSeatPart oturdukları koltuk olacaktır.
- Karakter bir koltuktan ayağa kalkarsa, active parametresi false ve currentSeatPart olacaktır nil.
Ayrıca bakın:
- Humanoid.Sit , bir Insanoid'in şu anda oturup oturmadığını gösterir
- Humanoid.SeatPart , bir İnsansız'ın şu anda oturduğu koltuğu gösteren, varsa.
Parametreler
Kod Örnekleri
This code sample demonstrates when the local player's Character sits down or stands up. It should be placed inside a LocalScript within StarterCharacterScripts in order to run when the player's character spawns in.
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local function onSeated(isSeated, seat)
if isSeated then
print("I'm now sitting on: " .. seat.Name .. "!")
else
print("I'm not sitting on anything")
end
end
humanoid.Seated:Connect(onSeated)
StateChanged
Bu olay, Humanoid durumu değiştiğinde ateşlenir.
Hiçbir "boşta durma" insansız durum olmadığından, bunun yerine Humanoid.Running etkinliğini kullanmalı veya RootPart parçasının Velocity durduğunda çalışmasını sağlamalısınız, çünkü Humanoid hala duruyor.
Ayrıca bakın
- Humanoid:GetState() ve Humanoid:ChangeState() durumu almak ve ayarlamak için.
- Humanoid:SetStateEnabled() belirli durumları etkinleştirmek ve devre dışı bırakmak için.
Parametreler
Humanoid'in önceki durum yaz.
Humanoid'in mevcut durum yaz.
Kod Örnekleri
Emits particles from the local player's Player.Character when they jump. To try this code sample, place it inside a LocalScript parented to StarterCharacterScripts.
local character = script.Parent
local primaryPart = character.PrimaryPart
-- create particles
local particles = Instance.new("ParticleEmitter")
particles.Size = NumberSequence.new(1)
particles.Transparency = NumberSequence.new(0, 1)
particles.Acceleration = Vector3.new(0, -10, 0)
particles.Lifetime = NumberRange.new(1)
particles.Rate = 20
particles.EmissionDirection = Enum.NormalId.Back
particles.Enabled = false
particles.Parent = primaryPart
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
-- listen to humanoid state
local function onStateChanged(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
particles.Enabled = true
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
particles.Enabled = false
end
end
end
humanoid.StateChanged:Connect(onStateChanged)
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
StateEnabledChanged
DevletEnabledeğiştirildi etkinliği, Humanoid:SetStateEnabled() çağrıldığında Humanoid üzerinde ateşlenir.
Değerler, bu durumun şimdi etkinleştirildiğini gösteren bir bool ile sorunun Enum.HumanoidStateType içine dahil edilir.
Ayrıca bakın:
- Bir devletin şu anda etkin olup olmadığını bulmak için, Humanoid:GetStateEnabled() kullanın
- Humanoid durum değişikliklerini dinlemek için kullan Humanoid.StateChanged
Parametreler
Etkin durumun değiştirildiği Enum.HumanoidStateType için değiştirilen durum.
Devlet şimdi etkinleştirilmişse doğrudur.
Kod Örnekleri
When a humanoid state changes for the Players.LocalPlayer, the code below prints whether the state has been enabled or disabled.
This code should work as expected when placed in a LocalScript.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onStateEnabledChanged(state, enabled)
if enabled then
print(state.Name .. " has been enabled")
else
print(state.Name .. " has been disabled")
end
end
humanoid.StateEnabledChanged:Connect(onStateEnabledChanged)
Strafing
Bu olay, Humanoid dönüş yaparken ateşlenmez ve geliştiriciler tarafından kullanılmamalıdır
Bu olay, Humanoid girer veya StrafingNoPhysics``Enum.HumanoidStateType çıkar olduğunda ateşlenir.
When the durumuna girerse, bu olay aktif bir parametre ile ateşlenecek .Etkinlik, aktif eşit yanlış olduğunda tekrar ateşlenecek, çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında çıktığında
Bu olay, StrafingNoPhysics``Class.Humanoid durumu ile bağlantılıdır ve hareket ettiğinde ateş etmez Humanoid yönüyle perpendiküler hareket ederken.Bu durum şu anda kullanılmıyor, eğer Humanoid:ChangeState() kullanılarak ayarlanırsa durum RunningNoPhysics 'a geri dönecektir.
Parametreler
Swimming
Bu olay, bir Humanoid 'nin yüzdüğü hızda Terrain suda değişen durumda ateşlenir.
Humanoids yüzün 87.5%'inde yüzün Humanoid.WalkSpeed .
Bu olay, Humanoid yüzmeyi bıraktığında daima 0 hızda ateş etmeyecektir.
Ayrıca bakın:
- Koşma ve tırmanma için Humanoid.Running ve Humanoid.Climbing etkinliklerine bakın
- Ayrıca, bir Humanoid ın yüzdüğünü Humanoid.StateChanged etkinliği kullanarak tespit edebilirsiniz
- Yüzmeyi Humanoid:SetStateEnabled() işlevini kullanarak devre dışı bırakabilirsiniz
Parametreler
Touched
Bu olay, insansızın uzuvlarından birinin başka bir ile temas ettiğinde ateşlenir BasePart.Bacak ile temasa geçen BasePart , bacak kendisi ile birlikte verilir.
Bu olay, ekstremitelerin Humanoid kendileriyle temasa geçtiğinde ateşlenmeyecektir.
Seçenekler
Humanoid.Touched etkinliği yararlı olmasına rağmen, ihtiyaçlarınıza daha iyi uyan alternatifler olup olmadığını düşünmelisiniz.
- Çoğu durumda, insanoid hareket ettiğinde sürekli ateşlenecek BasePart.Touched bir etkinlik yerine BaseParts ilgi için bir Humanoid.Touched etkinliği bağlanması önerilir, çünkü insanoid hareket ettiğinde sürekli ateşlenecek bir etkinlik.Örneğin, bir atış topu oyununda, toplar için etkinliğini kullanmak yerine bağlanması daha pratik olurdu.
- Humanoid yere indiğinde çalışmaya çalışırken, Humanoid.StateChanged etkinliği daha uygundur.Alternatif olarak, insansızın herhangi bir havasız malzemede durup durmadığını görmek için Humanoid.FloorMaterial kontrol edebilirsiniz.
Notlar
- Bu etkinliğe bağlanmak, her bacakta bir TouchTransmitter oluşturulmasına neden olacaktır.
- Şu anda BasePart.TouchEnded için eşdeğer yok Humanoids .
Parametreler
Kod Örnekleri
When placed inside a Player.Character model this code will give a player the 'Midas touch'. Everything their character touches will change to gold.
When the Humanoid dies, this change is undone and the golden BasePart|BaseParts are returned to their original state.
To test this out, place this code inside a Script and place it in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local partInfo = {}
local debounce = false
local function onHumanoidTouched(hit, _limb)
if debounce then
return
end
if not hit.CanCollide or hit.Transparency ~= 0 then
return
end
if not partInfo[hit] then
partInfo[hit] = {
BrickColor = hit.BrickColor,
Material = hit.Material,
}
hit.BrickColor = BrickColor.new("Gold")
hit.Material = Enum.Material.Ice
debounce = true
task.wait(0.2)
debounce = false
end
end
local touchedConnection = humanoid.Touched:Connect(onHumanoidTouched)
local function onHumanoidDied()
if touchedConnection then
touchedConnection:Disconnect()
end
-- undo all of the gold
for part, info in pairs(partInfo) do
if part and part.Parent then
part.BrickColor = info.BrickColor
part.Material = info.Material
end
end
end
humanoid.Died:Connect(onHumanoidDied)