2016-06-28 9 views
0

私はRoblox for my gameのヘルスパックをやっています。コードが完成し、それが完璧に動作しますが、私は健康パック自体は私のコードはRoblox無限回転ループ

local healthPack = script.Parent 
local healAmount = 30 
local cooldown = 5 
local canHeal = true 

local function handleTouch(otherPart) 
    local character = otherPart.Parent 
    local humanoid = character:FindFirstChild('Humanoid') 
    if humanoid and canHeal then 
     if game.Workspace.Player1.Humanoid.Health == 100 then 

      print("You have enough health") 

     else 

     canHeal = false 

     game.Workspace.HealthPack.Transparency = .75 

      local currentHealth = humanoid.Health 
      local newHealth = currentHealth + healAmount 
      humanoid.Health = newHealth 
      wait(cooldown) 
      canHeal = true 
      game.Workspace.HealthPack.Transparency = 0 

     end 
    end 
end 

healthPack.Touched:connect(handleTouch) 


while true do 
    local currentRotationX = game.Workspace.HealthPack.Rotation.X 
    --local currentRotationX = game.Workspace.HealthPack.Rotation.Y 
    local currentRotationZ = game.Workspace.HealthPack.Rotation.Z 

    game.Workspace.HealthPack.Rotation.X = currentRotationX + 10 
    --game.Workspace.HealthPack.Rotation.Y = currentRotationY + 10 
    game.Workspace.HealthPack.Rotation.Z = currentRotationZ + 10 

    wait(.5) 
end 

答えて

0

は、次のコードを試してみてください間違っているものを私に教えてくれているので、ここでクールな方法でゆっくりと回転したいです。オブジェクトを回転させるにはを正しくに変更する必要があります(回転プロパティを変更するのは通常、このトリックを行いません。positionプロパティに似ていますが、衝突に適合しています)。CFrameを使用する必要があります。

local x = 0 
while true do 
    game.Workspace.HealthPack.CFrame = game.Workspace.HealthPack.CFrame * CFrame.Angles(0, math.rad(x), 0) 
    x = x + 1 
    wait() 
end 

私はRBX.Luaでしばらく働いていないので、これは最善の方法ではないかもしれません。

+0

ありがとうございましたが、CFrameは何ですか? –

+0

ROBLOX Developer WikiでCFrameを検索することをお勧めします。簡単な説明として、レンガの向き(回転)と位置を制御するすべてのレンガのプロパティです。ローテーションは少し複雑ですが、CFramesのローテーションを処理するために掘り下げたい場合は、基本的な幾何学的な知識を少なくともいくつかお勧めします。 –

+0

もう一つの問題があります。私はそれを瞬時に回転させたいと思っていますが、あなたのコードはそれを速く回転させ、遅くなるのでここに問題があります。 –