Android無料 2D格闘アクション「サラリーマン忍者」予約開始!!

睡眠不足、禁ゲーム、ストレス湿疹で1年やっと‥やっと〜 
Android無料アクションゲーム
「サラリーマン忍者」予約トップ10に出せました〜!
 みなさまどうか予約お願いします〜!

 

f:id:loveyama1976:20151117200154j:plain
f:id:loveyama1976:20151117200242j:plain

⑫unity2Dの シーン(Scene)の移動について

 

シーン(Scene)は、

例えばで2面までのゲームがあるとすると、

  1. タイトルシーン
  2. キャラ選択シーン
  3. 1面シーン
  4. 1面クリア後のシーン
  5. 2面始まる前のイベントシーン
  6. 2面シーン
  7. 2面クリア後のシーン
  8. エンディングシーン
  9. 1.タイトルシーンからの別移動で、オプションシーン

といった感じで9このシーンを作ることになります。

 

「unityへのシーンの登録」

 具体的には、1こ目のシーンを開いて次の作業をします。 

  1. File から Build Settings を開く

    f:id:loveyama1976:20150815155936p:plain

 2.開いた画面で、Add Current をクリックすると、Scenes In Build に表示される。  f:id:loveyama1976:20150815160030p:plain

 これを9シーンあるので、後8回繰り返します。

(シーンを開く→ File から Build Settings を開く→Add Current をクリックする)

 

左下にPlatform がありますが、実際 Ios やAndroid で動かしたい(Buildしたい)時に必要であり、シーンの移動だけであれば、必要ありません。

 

また、Scenes In Build に表示されたシーンをDellキーでScenes In Buildから消したりしても、本体のデータが消えたり、

実際Buileするときに、Ios や Android などを選べるので、一度Iosを選んでしまったからといって、金輪際Iosだけになるとか はありません。

要は、

ばんばんAdd Current をクリックしても問題ありません。

 

「シーン(Scene)移動のScript」

次は、1面の敵のhpが0になったら、の1面クリア後のシーン(scene名:04.1meclear)に移動するというC#を例として書きます。

 

using UnityEngine;

using System.Collections;

 

public class Sceneidou1menclear : MonoBehaviour {

 

              //体力

              public float hp = 5000;

              public float Maxhp = 5000;

//ダメージ設定

              public float BukiDamage = 10;

                           

    //シーンの移動の設定

              void Update () {

 

                            // ヒットポイントが0以下であれば、シーン移動する。

                            If (hp < 1 )

                            {

                                          Application.LoadLevel ("04.1meclear");

                            }

    }

 

    //ダメージの設定 CollisionにBukiタグがあるときは、hpを減らす)

              void OnCollisionStay2D(Collision2D collision)

              {                                                                                  

                            if (collision.gameObject.tag == "Buki")

                            {

                                          // ヒットポイントを減らす

                                          hp = hp - BukiDamage ;  

        }

    }

}

 

この、scriptの中段にあるApplication.LoadLevel ("○○"); がシーンの移動関数です。 

○○に、Add Current してある シーンを入力してあげると、シーンが移動します。 

 

例えば、タイトルのPushStartという、UGUIのボタンにScriptをふっつけて内容に、

 

public void StartPush()

                           

              {

                            Application.LoadLevel ("02kyarasentaku");

              }

 

として、UGUIのボタンを設定すると、

 タイトルで、PushStartボタンを押したら、キャラ選択シーン(02kyarasentaku);

に移動します。

 

f:id:loveyama1976:20150815160552p:plain

                      ↓

f:id:loveyama1976:20150815160657p:plain

                       

 

 

簡単ですね!以上です。

次回はボタンや、会話などを表示させる、UGUIについて、ど素人なりに説明します。

⑪unity2D でsprite を設置すると”ぼやける”問題について

 

よい土曜日をお過ごしでしょうか。札幌は曇りです。

自分的には、直射日光が死ぬほどきらいなので、今日はいい日です。

 

本題です。一生懸命つくったspriteにアニメーションをつけて、実際再生

した結果、 ぼやけてる! ピントが合っていない!

 

となったことありませんか? 

これは、ショックですよね。一生懸命絵を描いたのに。

ゲームキャラがぼやけてる なんて絶対許せませんよね。

 

で、解決方法。

 

下の図をみてください。

Spriteの管理で、Generate Mip Maps にチェックが入っていますよね。

f:id:loveyama1976:20150627124105j:plain

これはゲームエンジンの負担を減らすために、spriteの解像度を下げる

設定のようです。 

画像のようにキャラがぼやけています。

 

Generate Mip Mapsのチェックを外したら、 “鮮明だ!”

 

長年の悩みが解決しました!!unity恐るべし。

ではまた。

⑧時間の管理について(Time.deltaTime関数を超わかりやすく!)

Time.deltaTimeは直近のフレームからの経過時間を示す

となっていますが、ど素人で全くわからなかったので、解析しました。

超分かりやすく説明します。

 

要は、よーいスタート! という関数でした。

 

 

①敵のBukiのtagの攻撃をうけたら、ダウンする(トリガー指定)を作る。

これは衝突判定であるOnCollisionStay2Dを使用します。

 

使い方は簡単。1回目、2回目と敵のパンチがあたったら、timeが増えて行って、合計1秒以上攻撃を受けたら、ダウンするというトリガーを出す関数をつくりました。

 

まず、スクリプトの上ので

public float time = 0;

を指定します。

public に指定すると、timeが増えていく所が画面のInspector で目でみて確認可能!

  

void OnCollisionStay2D(Collision2D collision)

 {      if (collision.gameObject.tag == "Buki"       )  

 {     time =  time + Time.deltaTime;   if( time >= 1.0f )  

 {    Animator myAnimator = GetComponent<Animator>();

   myAnimator.SetTrigger("Down"); 

 

//そして、ダウンしたら、timeをゼロに戻す   

  time =  0;   }

  }

}

これで、敵のパンチを受けたらtimeがたまっていき、1秒を超えたらダウンする。

そしてtimeが0に戻る というスクリプトができました。

 

f:id:loveyama1976:20150425121729p:plain

 これがパンチ受けた1発目で0.36秒タイムが増えているのがわかります

f:id:loveyama1976:20150425121815p:plain

これが何発か敵の攻撃をうけて、timeが1秒を超え、ダウンして、timeが0に戻ったところです。

 

 

②ため攻撃を作る。

Update関数ただTime.deltaTime関数 を入れると、画面のInspector timeがずっと増え続けるだけです。

これは、スタートしてからの経過時間を使うのに使えます。

 

ため攻撃はボタンを押してる時だけtimeをふやしたいので、

Update関数にif分で条件をつけます。

 

//Fire1を押している間、timeが増え続ける

if( Input.GetButton("Fire1")

{

  time =  time + Time.deltaTime;

 

 //3秒を超えたら、強烈殴打攻撃トリガーをだす

 if( time >= 3.0f )   {    Animator myAnimator = GetComponent<Animator>();    myAnimator.SetTrigger("kyoretsuouda"); 

 

//そして、timeをゼロに戻す     time =  0;   }

}

 

アニメーションで通常攻撃より3倍とか強力な攻撃を作り、

kyoretsuoudaのトリガーで推移するようにすれば、

”ため攻撃”の完成です!

 

 

時間管理 分かりやすかったでしょうか…ではまた!

⑥unity2Dの衝突判定について 無限ジャンプしないために

 

みなさまおはようございます。5時53分です。

月曜日はいやですね…本当に会社めんどくさい。あああ…

って言ってないで、やる気出すためにブログを更新しようかと

 

衝突判定ですが、簡単にメモします

地面との衝突判定

 

public class kihon : MonoBehaviour {

public bool ground = false; //と通常はfalseとしておいて

 

//2Dの物体がground Tag に接していると、

void OnCollisionStay2D(Collision2D collision)


 {
     
  if (collision.gameObject.tag == "ground" || collision.gameObject.tag == "Mono")
  {
  ground= true;
  }

 }

 

//2Dの物体がGround Tag から離れると

void OnCollisionExit2D(Collision2D collision)
  {
  {Animator myAnimator = GetComponent<Animator>();
   myAnimator.SetBool("Grounded",  false);}

  if (collision.gameObject.tag == "ground" || collision.gameObject.tag == "Mono" )
  {
   jump = false;
  }

}

 

と ground に OnCollisionStay2D (2Dの物体がふっついているとき)

”true” とする という内容です。はい。余裕でみなさん知っていますね。

ただ、ブログでこれを外すわけにもいかないので(笑)

で、これをどうつかうかというと、

 

//ジャンプ

public class kihon : MonoBehaviour {

public float jumpPower = 300f;

 

//guoundに接しているときにJumpぼたんを押すと
 if(Input.GetButtonDown("Jump") &&  ground ) ←ここでつかいます!

void Update () {
   {

  // jumpPower 分 上に力をあたえる

  rigidbody2D.AddForce(Vector2.up * jumpPower );
     Animator myAnimator = GetComponent<Animator>();
       myAnimator.SetTrigger("Jump");

 }

}

}

と ground に接しているときじゃないとJump できないわけです。

無限ジャンプを回避しているわけですね。 

f:id:loveyama1976:20150223063252p:plain

ジャンプ成功!

 

衝突判定の注意は、3Dの物体と2Dの物体はぶつからないということです。

Collision2D とCollision は当たらない。不便だ…どうにかならないかな。

 

ではまた!