【Unity2D 入門】横スクロールアクションゲームを作ってみたい -攻撃アクションを作る1回目
前回ダメージを受けて点滅したり後ろにノックバックしたりできる処理をかきましたが、
今回はこっちから攻撃してやんよ!という事で攻撃処理を作りたいと思います。
長いので2回位に分けます。
攻撃Sprite画像を用意する
毎回の事ながらN氏にお願いしてまた攻撃画像を用意してもらいました!N氏GJ!ww
攻撃アニメーションの作成
キャラクターがエンターキーを押したら口を開けるというアニメーションを作成します。
N氏に作ってもらった画像をSptite化してスライスしておきます。
口を開けるアニメーションを長めに作成します。
名前はplayer@attackとでもしておきましょう。
この状態からAnimetorタグを開いて、アニメーションに対してフラグを指定します。
isAttackフラグを作成して
Walk > Attack は isAttack = true;
Attack > Walk は isAttack = false
指定します。
ここまでできたらisAttackフラグでモーションを移動できるようになりました。
プレイヤーにアタッチされているplayer.csを編集します。
player.cs
using UnityEngine;
using System.Collections;
public class playermove : MonoBehaviour {
public GameObject firePrefab;
private bool isRight = true;
private bool isAttack = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
//攻撃フラグをAnimatorに設定する
GetComponent<Animator>().SetBool("isAttack",isAttack);
}
void FixedUpdate ()
{
// エンターキーが押されたら攻撃フラグを立てる
if(Input.GetKeyDown("return")){
isAttack = true;
StartCoroutine("WaitForAttack");
}
//左右キーの入力
float h = Input.GetAxis("Horizontal");
rigidbody2D.AddForce(Vector2.right * h * 300f);
//右を向いていて、左の入力があったとき、もしくは左を向いていて、右の入力があったとき
if((h > 0 && !isRight) || (h < 0 && isRight))
{
//右を向いているかどうかを、入力方向をみて決める
isRight = (h > 0);
//localScale.xを、右を向いているかどうかで更新する
transform.localScale = new Vector3((isRight ? 2 : -2), 2, 2);
}
}
IEnumerator WaitForAttack()
{
yield return new WaitForSeconds(0.5f);
isAttack = false;
}
}
これでプレイヤーがエンターキーを押すと口を開けるというモーションができあがりました。
攻撃本体のSprite作成
Spriteのオブジェクトを作成してfireとでも名付けておきます。
※この際にOrder In Layer を11にセットしておきます(プレイヤーより前面に出すため)
オブジェクトを選択した状態でAnimationを作成します
今回はattack@fireと名付けておきます。
これで一応ゲーム画面上ではアニメーションすると思います。
これを飛ばすように見せたいので
スクリプトを作成します。
moveattack.cs
using UnityEngine;
using System.Collections;
public class moveattack : MonoBehaviour {
public float spd = 0.01f;
// Update is called once per frame
void Update() {
transform.Translate(Vector3.right * spd);
Destroy(gameObject, 1.0f);
}
}
これで炎は右に飛んでいき1秒後にかってに消えるという処理ができました。
これをfireオブジェクトにアタッチしておきます。
ここまでできたらfireをPrefab化しておきましょう。
ここまでやると。
- プレイヤーはエンターを押すと口を開ける
- 炎はエミュレートすると勝手に右に飛んでいく
という別々の動きができあがりました。
次回はこれを繋げます。
なかなかこの処理つくるの大変ですね、最近風邪が流行っていますので皆さん気をつけましょう!