④主人公の動きの スクリプト(C#)を作りました!
ついにプログラムに手を出しました。
unityには C# と Javascript と Boo がありますが、
だいたい最後には C♯に落ち着くようです。
まずAdd ComponentからNew Script をクリック!
script名を入力するとinspectorに作成されるので、
script名をダブルクリックすると、MonoDevelopが起動します。
scriptは2つの処理が代表的なものになっています。
1つ目はvoid Start()で、
開始直後に行われる処理になります。
たとえば、忍者が上から下りてくるときに右手をあげているポーズ(トリガー)
を登録しておけば、スタートの時だけ、そのポーズをとります。
例:
void Start ()
{ Animator myAnimator = GetComponent<Animator>();
myAnimator.SetTrigger("Jump"); }
これは、スタート直後はJumpというトリガー(引き金)をセットするという
プログラムです。
2つ目は、毎回更新されるvoid Update ()です。
たとえば、パンチをだしたい!ってときには、Fire1ボタンを押したら
パンチのトリガーがセットされるというものです。
ちなみに、ダブルスラッシュの後にメモが書けます。
//○○~ でメモっておくことで、自分の書いたスクリプトを忘れずにすみます。
例:
void Update () {
//Fire1を押したらパンチのトリガーをセットする
if( Input.GetButtonDown("Fire1"))
{ Animator myAnimator = GetComponent<Animator>();
myAnimator.SetTrigger("Panch") ; }
//Fire3とFire2を押し続けたら、防御のboolをセットする
if(Input.GetButton ("Fire3") && Input.GetButton ("Fire2") )
{Animator myAnimator = GetComponent<Animator>();
myAnimator.SetBool("Bougyo", true );}
else {Animator myAnimator = GetComponent<Animator>();
myAnimator.SetBool("Bougyo", false);}
//Fire2またはFire3を押し続けたら、Runをトリガーする。
if(Input.GetButton ("Fire3") || Input.GetButton ("Fire2"))
{Animator myAnimator = GetComponent<Animator>();
myAnimator.SetTrigger("Run");
}
//Fire2またはFire3が押されていないときはTaikiをトリガーする。
else {Animator myAnimator = GetComponent<Animator>(); myAnimator.SetTrigger("Taiki");}
//(忍術に使用)発動条件1 Fire2がおされたら、発動条件1をトリガーする
if(Input.GetButtonDown("Fire2") )
{ Animator myAnimator = GetComponent<Animator>();
myAnimator.SetTrigger("Hatudou");
}
//(忍術に使用)発動条件2 Fire3がおされたら、発動条件2をトリガーする
if(Input.GetButtonDown("Fire3") )
{ Animator myAnimator = GetComponent<Animator>();
myAnimator.SetTrigger("Hatudou2");
}
ボタンを押すと発動するプログラムは3種類あり、
- Input.GetButtonDown("Fire2") はボタンが押されたらという意味
- Input.GetButton("Fire2") はボタンが押されつづけたらという意味
- Input.GetButtonUp("Fire2") はボタンが離されたらという意味
です。
また、アニメーションへの伝達は今回2つ使っています。
- myAnimator.SetTrigger("Panch)はイベントを発生させるためのもので、ボタンが押されたら、パンチの条件イベントが発生する という意味です。
- myAnimator.SetBool("Bougyo", true )はmyAnimator.SetBool("Bougyo", False )とセットで使うもので、Falseが命令されるまでは、trueの命令が続きます。
たとえば、ボタンが押されている間は防御される(true)
if(Input.GetButton ("○○"))
{Animator myAnimator = GetComponent<Animator>(); myAnimator.SetBool("Bougyo", true );}
で離れたら防御をやめる(false)
else {Animator myAnimator = GetComponent<Animator>();
myAnimator.SetBool("Bougyo", false);}
といった使い方です。
これはジャンプでも使用できますが、地面との設置判定が必要なので、次回にジャンプなどに使用する、”設置判定” について説明します。
(結果)
アニメーションの設定をして“パンチ”と“防御” 成功!!
(アニメーションについても後から説明します)
今日はここまでにします!