/ / Roblox टच इवेंट केवल एक ब्लॉक पर फाइट्स के लिए होता है - इवेंट्स, लुआ, टच, रॉब्लोक्स

रोबॉक्स टच इवेंट केवल फीट के लिए ब्लॉक पर - घटनाएं, लुआ, टच, रोबॉक्स

मुझे LUA और Roblox की खोज है और अपनी पहली स्क्रिप्ट का परीक्षण करना है। मैं प्रबंधन करने की सही विधि जानना चाहूंगा स्पर्श घटना जब पात्र अपने पैरों से किसी ब्लॉक को स्पर्श करता है, (चलना या कूदना)

local function onTouch(hit)
if hit ~= ??user.legs?? then
return
end
-- exemple of action
if hit.Parent.Humanoid.JumpPower < 150 then
hit.Parent.Humanoid.JumpPower = hit.Parent.Humanoid.JumpPower + 5;
end
end

script.Parent.Touched:connect(onTouch)

उत्तर:

उत्तर № 1 के लिए 1

यदि आप "किसी खिलाड़ी द्वारा अपने पैरों के साथ एक हिस्से को छूने पर टकराव को संभालने की कोशिश कर रहे हैं, तो आपका कोड ठीक है, लेकिन यदि आप यह पता लगाना चाहते हैं कि खिलाड़ी मैदान में खड़ा है या नहीं, तब, यह नहीं है" टी।

एक बेहतर तरीका निम्नलिखित होगा:

उदाहरण:

IsOnGround=function()
local b=false;
local range=6;
local char=game:service("Players").LocalPlayer.Character;
local root=char:WaitForChild("HumanoidRootPart",1);
if root then
local ray=Ray.new(root.CFrame.p,((root.CFrame*CFrame.new(0,-range,0)).p).unit*range);
local ignore={char};
local hit,pos=workspace:FindPartOnRayWithIgnoreList(ray,ignore,false,false);
pcall(function()
if hit then
b=true;
end
end)
else
print("root not found");
end
return b;
end

हालांकि, यह विधि isn "t सबसे अधिक विश्वसनीय है, यह R15 वर्णों की तरह टी" है, न ही चलना।

एक विधि जो 99% बार की तरह काम करेगी, और उपयोग में आसान है, फ़्लोरमैटर है।

मंजिल सामग्री चरित्र की एक संपत्ति हैमानव सदृश। यह गुण शून्य होगा यदि खिलाड़ी किसी भी चीज़ पर खड़ा नहीं होता है (दूसरे शब्दों में, जमीन को छूना नहीं!) इस विधि को लगातार पता लगाने के लिए लूप में रखा जा सकता है कि क्या आप ब्लॉक पर खड़े हैं या नहीं। यह विधि, R15 और R6 दोनों के लिए भी काम करती है, और एक .Touched कनेक्शन का उपयोग करने की तुलना में कम गड़बड़ है।

उदाहरण:

    coroutine.wrap(function()
while wait()do
local floor=humanoid.FloorMaterial
if(tostring(floor)=="Enum.Material.Air")or(floor==nil)then
print("on air");
else
print("stepping over something");
end
end
end)()

आशा है कि मेरा उत्तर मदद करता है।