④主人公の動きの スクリプト(C#)を作りました!

 

ついにプログラムに手を出しました。

unityには C# と Javascript と Boo がありますが、

だいたい最後には C♯に落ち着くようです。

 

まずAdd ComponentからNew Script をクリック!

f:id:loveyama1976:20150117105320p:plain

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種類あり、

  1. Input.GetButtonDown("Fire2") はボタンが押されたらという意味
  2. Input.GetButton("Fire2") はボタンが押されつづけたらという意味
  3. Input.GetButtonUp("Fire2") はボタンが離されたらという意味

 

です。

また、アニメーションへの伝達は今回2つ使っています。

  1. myAnimator.SetTrigger("Panch)はイベントを発生させるためのもので、ボタンが押されたら、パンチの条件イベントが発生する という意味です。
  2. 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);}

 

といった使い方です。

 これはジャンプでも使用できますが、地面との設置判定が必要なので、次回にジャンプなどに使用する、”設置判定” について説明します。

 

(結果)

f:id:loveyama1976:20150117113934p:plain

アニメーションの設定をして“パンチ”と“防御” 成功!!

(アニメーションについても後から説明します)

 

今日はここまでにします!

 

 

 

 


Unityランキングへ