2016-05-25 24 views
0

最近私のゲームにInGame Buttonを追加することを考えました。これはGUIやUIボタンではなく、壁などに追加されたブロックです。ゲーム内のボタンを押してアニメーションを再生する

ダミーコード:

OnTriggerEnter(c:Collider) { 
    if(c.gameObject.tag =="Player") 
    { 
     //Text = "E to interact!" 

     if(key.pressed("e") 
     { 
     //Connect the Button to a specific Block,  play a Animation 
     } 
    } 
} 

それでは、どのように私は、ボタンに特定のブロックを接続し、私はeキーを押した場合、単に特定のブロックの上にアニメーションを再生できますか?私はユニティで新しいことを覚えておいてください。 ありがとうございます!

+0

あなたはもっと手の込んだしてくださいすることができます! –

答えて

3

既にアニメーションを作成できたかどうかはわかりませんので、最初から説明します。エディタで「Door」を選択し、ctrl + 6を押してアニメーションウィンドウを開きます。ここからブロックをアニメートすることができます。 アニメーションの作成が完了すると、ブロックオブジェクトには新しいスクリプトが添付されます:アニメーター

  • アニメーション::シングルアニメーション(平行移動、回転、色の変更、...)

    を定義しますが、これら2つの異なるものです

    アニメーターウィンドウでアニメーター・ステート・マシンを見ることができます
  • アニメーター:対応するゲームオブジェクトのアニメーションがいつ発生するかを定義します。アニメーターは、任意のオブジェクト

を再生する次のアニメーションであるかを定義する(例えば、ブール値)の変数は、あなたのボタンは、それが押されたときに移動するものを持つことができます(アニメーターを持つことができます。あなたのドア持つことができます

たとえば、ボタンアニメーターでは、アイドル、プレス、アンプレスの3つの状態が必要です。 状態プレスにはスピード1のアニメーション「プレス」が含まれます。状態UnPressにはアニメーション「プレス - スピード-1

が含まれます。それでもアニメーターウィンドウには、アイドルと他の2つの間のリンクが作成されます州とあなたのボタンのコードでは、あなたのドア

をアニメーション化するために同じことを行うことができ、あなたが次にあなたを

public Animator Door; // In the editor, give a reference to your door. It must have an Animator script for this to work 

OnTriggerEnter(c:Collider) { 
    if(c.gameObject.tag =="Player") 
    { 
     //Text = "E to interact!" 

     if(key.pressed("e") 
     { 
      GetComponent<Animator>().SetTrigger("OnPress"); // The button's animator goes to "pressed" state 
      Door.SetTrigger("Open"); // The door's animator goes to "open" state 
     } 
    } 
} 

を書き込みます(たとえば)

を「たonPress」と呼ばれるトリガ条件を追加することができ広告D別のトリガーボタンを

をunpressするもう一つ:あなたは「ブロックにボタンを接続する」と言うとき、あなたが何かを誤解よう、私が感じる:あなたのボタンのスクリプトはすでにエディタでブロックを追加する必要があります

アニメーションの詳細については、これら二つのリンクを見:

http://docs.unity3d.com/Manual/animeditor-UsingAnimationEditor.html http://docs.unity3d.com/Manual/AnimatorWindow.html

+0

うわー!それはとても長くていい答えです!ありがとうございました!私はまだ家ではない、それをテストし、それが動作するかどうか、または私は何か問題がある場合は、ありがとう! –

+0

私のボタンのスクリプトは、ボタン上になければならず、私は移動したいブロック(ドア)ですか?私のInGame Buttonを押して、Doorを移動したいので、ScriptureにButtonBlockの機能が含まれています。私は両方のスクリプトを添付する必要があるか、または公開ゲームオブジェクトを作成して参照する必要があると思いますか? –

+0

私があなたが「ブロック」と呼んだのは、ゲーム内ボタンの視覚的な表現でした。私が理解したことを確かめるために、あなたはボタンのように見える3Dメッシュを持つ1つのgameオブジェクトを持っています。プレーヤーはそれを押すことができ、ドアのような3Dメッシュを持つ別のgameオブジェクトがあります。プレイヤーがボタンの前で「e」を押すと、ドアが動く。これは正しいです? –

関連する問題