こんばんや★ソニスです★
今夜も引き続きSimCheapを作ってこうと思います★
今回はアニメージョンと操作をやっていこうと思いませう★
まずはアニメージョン。
Animationウィンドウを使って作っていくのですが・・・
おやおや~見当たりませんな~?逝っちゃったんデスかね?
なのでWindowから召喚しませう★
コンゴも使うと思うのでドッキングしませう★(ここは省略)
そしてここのプレイヤーである「SC Player」を選択し、
次にAnimatorウィンドウからCreateを選択。
そうするとどういう名前のAnimファイルを生成するか聞かれるので、
適当な名前にしませう★
ここではダッシュか歩きか決めてないのでとりまMoveに。
歩きならWalk、走りならRunとかにするとわかりやすいかも。
これでアニメージョンを創る準備ができました!
次に肝心のアニメ画像をD&Dしませう★
とりま今回は
(見辛くて申し訳ナス!)
A→B→A→C→(最初へ)
といった感じに使用と思いませう★
ただアニメーションするだけならただD&Dするだけでも作れますが、
今回のように繰り返し同じ画像を使う場合は1枚ずづD&Dする必要がありませう★
ひっかかりメモ:あらかじめ選択すべし
どうやらHierarchyウィンドウで対象のオブジェクト(今回はSC Player)を選択していないとD&Dできないみたいです…
ちなみにこの時この
赤いボタンを押した後、再生ボタンを押すと
お分かりいただけただろうか・・・
こんな感じでScene及びGameビューでアニメーションの再生を確認できませう★
(GIFとかの写し方がわからない&搭載できないのでお分かりいただけない静止画での説明になります。ほんとセンセンシャル!)
画像のままにすると動きがぎこちないので微調整・・・
アニメーションはこれでいいかと。
(問題があれば後程修正しませう)
次は主人公を動かしていきたいと思いませう★
スクリプトはCreateメニューからC#Scriptで作成できませう。
(旧Verではちょっと違ったかも?)
でもこのままだとエラーが出て(なんでだかは私にもわからないです。
Unityに強いプログラマーさん教えてくださいお願いです!)
オブジェクトに憑依させることができないことが稀によくあるので、
オブジェクトのInspecter→Add Component→New Scriptで作りませう★
この方法なら確実でせう★
では作りませう・・・
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public string AnimState = “Normal”;//アニメーションの変更処理用
Rigidbody2D RB;//Rigidbody2D取得用
SpriteRenderer SSR;//SpriteRenderer取得用
Animator Anim;//Animator取得用
void Start()
{
RB = GetComponent<Rigidbody2D>();//Rigidbody2Dを取得
SSR = GetComponent<SpriteRenderer>();//Rigidbody2Dを取得
Anim = GetComponent<Animator>();//Rigidbody2Dを取得
}
void Update()
{
Move();//Moveメソッドを毎フレーム呼び出す
Jump();//Jumpメソッドを毎フレーム呼び出す
State();//Stateメソッドを毎フレーム呼び出す
}
void State()//Stateメソッド、状態変更に関する処理を実行
{
switch (AnimState)//AnimStateに格納されている文字列によって条件を分岐
{
case “Normal”://Normalだったら
Anim.SetBool(“Move”,false);//Animatorで設定したMove変数をfalseに
break;//終了処理
case “Move”://Moveだったら
Anim.SetBool(“Move”, true);//Animatorで設定したMove変数をtrueに
break;//終了処理
}
}
void Move()//Moveメソッド、移動に関する処理を実行
{
if (Input.GetKey(KeyCode.RightArrow))//右アローキーを押しているか確認
{ //押していたら
RB.AddForce(Vector3.right * 100.0f);//右へ移動
AnimState = “Move”;//AnimStateにMoveを代入
if (SSR.flipX)//画像の反転がオンか確認
{ //オンだったら
SSR.flipX = false; //オフにする
}
}
else if (Input.GetKey(KeyCode.LeftArrow))//左アローキーを押しているか確認
{ //押していたら
RB.AddForce(Vector3.right * -100.0f);//左へ移動
AnimState = “Move”;//AnimStateにMoveを代入
if (SSR.flipX == false)//画像の反転がオフか確認
{ //オフだったら
SSR.flipX = true; //オンにする
}
}
else//何も押されていない場合…
{
AnimState = “Normal”;//AnimStateにStateを代入
}
} void Jump()//Jumpメソッド、ジャンプに関する処理を実行
{
if(Input.GetKeyDown(KeyCode.UpArrow))//上キーが押しているか確認
{ //押していたら
RB.AddForce(Vector3.up * 1000);//ジャンプ
}
}
//結構書きましたね・・・疲れましたよ★
//こんなんでもまだまだバグいっぱいで
//マ〇オおぢさんより簡易なんだから・・・
//やめたくなりますよ~プログラミングぅ~★
}
とりまこんな感じのコードで。ぬわああぁぁぁん疲れたよもぉぉぉん
(スクリプトの内容解説については別記事で
細かく説明しませう★ここでは割愛です★)
ひっかかりメモ:あらかじめ作るべし
ここでは移動しているなら移動アニメに、してなければ静止しているアニメにしようとしましたが、どうやら静止しているアニメもあらかじめ移動アニメと同じ方法で作成しておいたほうがラクみたいですね・・・
ジャンプ力が少し低いですが、まあ大丈夫でしょう(そもそもマ〇オおじさんのジャンプ力が異常なだけでこれはわりと普通だと思う)
しかしこのままだと某銀河最強のバウンティーハンターのスペースジャンプ(知っている人少ないか・・・一応ス〇ブラに初代から今に至るまでずっと参戦している人なんだけどね・・・)よろしく何回も空中ジャンプをしてしまいます!
でもめんどくさいからわりと仕様にしてもバランスは取れそう・・・
とりま対処するための解説記事もこの製作続編も作りたいですし、目標であったアニメ、移動、ジャンプどれも完了したので今日はここまで!
以上、ウオユツンエ=ソニスでした★
ご視聴ありがとうございました★
おまけ
実はRigitBodyをちょっといじったのですが、
わりと重要なことにRigidBody2D→Constraints→FreezeRotation→Zにチェックを入れておかないと大抵のキャラクターはこのように・・・
倒れて死んでしまいます・・・
皆様をきをつけを★