2016-12-31 197 views
-2

我真的在ROBLOX製作腳本,針對我的UFO,其中每當UFO從高空經過它播放音頻。我做了如下腳本需要幫助的ROBLOX腳本(LUA)

while true do 
    if script.Parent.Parent.Velocity.Magnitude>10 then 
    if local h = hit.Parent:FindFirstChild("Humanoid") 
     then script.parent:play() 
     wait(5) 
    else 
     wait() 
    end 
    wait() 
end 

任何更正將是一個真正的幫助!

謝謝!

+0

你想要什麼樣的建議? – Vyacheslav

+0

我不認爲你應該使用'while'循環。我以前從未爲Roblox製作過插件,但是'while'循環會阻止。從[this](http://wiki.roblox.com/index.php?title=Tutorial:Plugins)教程看,它看起來像你想看看鉤子 – DavisDude

+0

他從來沒有提到任何關於插件@DavisDude – warspyking

回答

0

一切不談,在根部有很多語法錯誤的以及實施的錯誤,都在所有的代碼塊你給我們不會做你希望它是什麼。

但是,這裏有一個解決的辦法是什麼基本的想法:

local newThread = coroutine.create(function() 
    while true do 
     for i, v in game.Players:GetPlayers() 
      local playerListener = workspace[v.Name]["Head"] 
      local ufoListener = workspace.Ufo:FindFirstChild('Listener') 
      local magnitude = (playerListener.Position - ufoListener.Position).magnitude 
      if (magnitude > 10) then 
       script.Parent:play() 
      else 
       wait(0.5) 
      end 
     end 
    end 
end) 

coroutine.resume(newThread) 

從本質上講,這裏的破敗:我們正在使用的協同程序使這個while循環不會產生這個線程的烙印。有使用可綁定的事件,也許在那裏,從LocalPlayer發射時,它調用服務器 - 一個事件,但我離題了一些服務器 - 客戶端握手一些更復雜的渠道。這應該完美地滿足您的需求,而不會讓您感到困惑。