2016-08-07 4 views
1
function onTouch(part) 
local human = part.Parent:findFirstChild("Humanoid") 
    if (human == nil) then 
     return 
    end 
    human.Health = human.Health - 10 
end 
script.Parent.Touched:connect(onTouch) 

私はluaでコーディングするのが初めてで、関数を使うのは初めてのことです。私はプラグインできるかのように「一部」私は使用せずに、ヒト可変パラメーターと同等のものは何ですか?

を設定する方法を見つけることができるように「の部分は」に等しいかを知りたいので、さえせずに動作します私はループ内でそれで何かをしたいので、一部のセットアップ:

local burnaffect = false 
--local a = 0 
function onTouch(part) 
local human = part.Parent:findFirstChild("Humanoid") 
    if (human == nil and burnaffect == false) then 
     return 
    end 
    a = 0 
    burnaffect = true 
end 
script.Parent.Touched:connect(onTouch) 

while burnaffect == true do 
    local part = --???? 
    local human = part.Parent:findFirstChild("Humanoid") 
    human.Health = human.Health - 10 
end 

コードが混乱に見えるかもしれませんが、私はかなり新しいですので、私はまだ最善であるかわかりません。

答えて

-1

私がRobloxのためにLuaを使用していた時期を思い出します。この部分は、ゲームに触れる部分です。それを参照する必要があるので、それが属しているか存在していないヒューマノイドオブジェクトを見つけることができるので、それが触れられたヒューマノイドかどうかをあなたのコードが知ることができます。さらなる質問がある場合はお知らせください。

0

あなたがしようとしているように見えるのは、プレーヤーが特定のレンガに触れると「火をつけて」いるようです。以下のコードはこれを正確に行います。その後、私はそれを1行ずつ説明します。

function onTouch(part) 
    local human = part.Parent:findFirstChild("Humanoid") 
    if (human == nil) then 
     return 
    end 
    local fire = Instance.new("Fire", part) 
    while (human.Health > 0) do 
     human.Health = human.Health - 10 
     wait(0.1) 
    end 
end 
script.Parent.Touched:connect(onTouch) 

だから、これからやります。

  • function onTouch(part)

我々は最初の関数を定義し、後ほどTouchedイベントでそれを参照できるように、名前を付けする必要があります。 partパラメータはscript.Parentオブジェクトに触れ、Touchedイベントを発生させるPartオブジェクトです。したがって、ROBLOXは何かがあなたのscript.Parentに触れると自動的にこの関数を呼び出し、その最初のパラメータpartとして触れたPartを自動的に入力します。

  • local human = part.Parent:findFirstChild("Humanoid")

これは、プレイヤーがブロックをタッチしている場合、私たちにCharacterを与えるつもりされていないため(ブロックを触れPartParentを取得する、与えるために起こっています私たちArmまたはpart変数にLeg、それはそれに触れ、実際のPartですので、我々は我々がParentを持っていたらpart'sParent。その後、我々は内部Humanoidオブジェクトを取得したいことを取得する必要がありますので、 Character。次に、Humanoidオブジェクトをhuman変数に入れます(見つけられた場合はhuman変数にnilを入れます)。私たちは、humanが、これは本当ではありません触れどんな意味、私たちはこの1つ前の行にHumanoidオブジェクトを見つけることができなかった意味しますゼロ(、であるかどうかを確認したい

  • if (human == nil) then

Characterですので、returnにしてください(つまり、すぐに機能を停止することを意味します)。

  • local fire = Instance.new("Fire", part)

この行は、私はあなたが燃焼をシミュレートしたい場合、これは役立つだろうと思ったので、私はそれを追加し、必要はありません。あなたが望むなら、それを放置することができます。 Fireという新しいInstanceが作成され、partの内部に配置されます。つまり、プレーヤーのLegがこの部分に接触すると、Fireがその脚の内側に置かれ、炎で点火するように見えます。

  • while (human.Health > 0) do私たちは、プレイヤーが死ぬまでループ保持したい(0以下のhuman.Health値を持っている)ので、human.Healthが0より大きい

    ありながら続けるためにループを伝えます
    • human.Health = human.Health - 10

    我々はをdeincrementますの値を10、次にwait(0.1)とすると、スクリプトが1/10秒間待機するようになります(これを別の番号に変更できますが、削除したままにしておくと重要です)非常に速く、すぐにプレイヤーを殺す。これが起こるようにするには、待機を解除することができますが、プレイヤーをすぐに殺したい場合は、最初にhuman.Health = 0と設定します。

    ご不明な点がございましたら、お気軽にお問い合わせください。これがあなたの質問に答えることを願ってください。

関連する問題