【Unity】ジャンプと落下にモーションをつける

いろいろと移動処理を作ってきたのですが、 移動ができるとアクションにモーションを設定したくなってきます。 今回は、アクション系なら欲しいモーション ジャンプと落下のアニメーション連動を考えていこうと思います。 長い間、ブログの更新と勉強をお休みしていたのですが、 その辺りは無かった事にして、シレっと続きを書いていこうと思います。 ダメダコリャ!( ~っ~)/ σ(^_^;) さて、ジャンプと落下のモーションを作るって事なんですが、 まず床を走っている状態を作ります。 アニメーションのお勉強(IK編)で作った走るモーションを使います。 Linecastの設定は端折るので、共に過去記事を参考にして下さい。 ActionTest using System.Collections; using System.Collections.Generic; using UnityEngine; public class ActionTest : MonoBehaviour { [Header("レイヤーマスク")] public LayerMask floorLayer; private Rigidbody2D playerRB; //Rigidbody取得 private Animator motion; //Animator取得 pri…

続きを読む

【Unity】列挙体でAnimationの切り替え

長期放置をしていたプログラムなんですが、 ようやく忙しさが抜けてきたので、 ボチボチではありますが、復帰して行こうと思います。 長い間、いじってなかったんですが、 合間なんかに処理を考えていました。 考えた処理を実際に動かすと上手くいかなかったり、バグったりします。 なので、ブログに挙げる事ができなかったりするので、 まだまだカメ更新となりそうでっす。 (;^o^) \(ToT )あんたほんとにそれでいいの 本題に戻りますが、アクションが増えると アニメーションの切り替えが増えて困らないでしょうか? クリップの遷移方法には、int、float、bool、triggerとありますが、 ケロはintを使って、クリップをナンバー化したものを呼び出しています。 ナンバー化と言っても目で見える訳ではないので、 正直、スクリプトを組んでいると、どのクリップが何番? なんてことが多々あります。 いちいちアニメーターのトランジションを確認しなくてはいけないうえ、 数値を間違えると違うクリップが再生されて、パニくります (T-T) グスッ 少しでも面倒な部分や間違いを回避できるように 処理を考えてみました。 まず、今作ってるアニメーターのステートなんですが、 アクションが増えるとアニメーターも複雑になります。(;^_^A アセアセ・・・ ステートにナンバーを振ってみましたが、 正直、トランジションを確認しないと、 本当に、こ…

続きを読む

【Unity】カメラの移動を考える

長い間、冬眠ならぬ初夏眠しておりました。 2カ月も放置する事になるとは… (..*) オハズカシイ・・ 休んでる間に沢山の方に見に来ていただいて、 これではイカンなと思いまして、PCを立ち上げた次第です。 暫くPCから離れていて何も出来てないので、 ブログの内容がショボイですが、よろしくお願い致します。_(._.)_ ユルシテ さて、更新と言う事なんですが… アクションの続きを書きたい所なんですが、 作成や検証ができてないので、続きを書く事ができません。 そこで、今まで触れてこなかった、 カメラワークを記事にしてみようと思います。 アクションでは、キャラの移動に合わせて、 カメラや背景を動かす必要があります。 シューティング系なら背景移動がメインなので、固定もできるのですが、 アクションの場合は、そうもいきませんよね~ (-_-)ゞ゛ウーム なので、少し検証をしてみようと思います。 まずカメラの移動を考える際、二つのやり方があります。 ・スクリプトを組まずに移動させる ・スクリプトで移動させる スクリプトを組まずに移動させる これは、一番簡単で処理が楽になるパターンです。 キャラの中にメインカメラを入れてしまう方法です。 カメラが子になるので、必然的に追従してくれます。 操作で移動させるような、例えば、ドラクエのマップ移動 これならスクリプトを組まなくても処理できます。 しかし… アク…

続きを読む

【Unity】Colliderの設定とジャンプの高さ

アクション物を作ると言う事で、 いろいろと試している所なんですが、 改めて難しいと感じる今日この頃でっす。 ようやく動きも出来てきたのですが、 アニメーションで作った、アンドロイド君を動かせるように 試行錯誤していて気付いたというか、知らないというか… Colliderってどうやって設定するの?って事です。 (;^o^) \(ToT )今更かよ! 初心者本や説明サイトを見ていると キャラ全体にColliderが設定してあります。 手や足が動かせるので、大まかに設定するより パーツ単位で設定する方が、いろいろとよさそうな感じなんで、 Colliderの設定を考えてみたいと思います。 まず、本などでよく見かける設定方法を 親になる胴体でColliderを設定しました。 正直、手や足の稼働範囲を考えると、こんな感じになります。 しかし、これでは折角の手足の動きが自由になってるのに 使えないのが残念になります。 また、スライディングを考えているので、寝かせてみると… Colliderだけ置いてけぼりになります。(T-T) グスッ これでは意味がないので、パーツ毎にColliderを設定します。 試しに、左腕にColliderを設定してみました。 この状態で腕を動かすと やはりColliderが置いてけぼりになります。(T^T) ヒック 稼働範囲のColliderを設定するしかないのでしょうか… …

続きを読む

【Unity】壁の移動処理で悩む

前回、Rayの設定まで出来たので、 キャラクターの移動処理を考え行きます。 横スクロールのアクションと言う事で、 横に移動しながら、ジャンプ・壁を登る・スライディング・落下 こんな動きを実装したいなと考えています。 そこで、キャラクターを移動させる方法を勉強してみたいと思います。 簡単に移動実装させるならCharacterControllerがあるみたいですが、 折角なんで自前で考えてみようと思います。 ちなみにAndroidアプリを意識しているので、 横移動は、強制的に右移動させる予定です。 まず移動処理なんですが、今まではTransformを使っていました。 しかし、Rigidbodyを積んでるキャラには使えないって言うか向いてません。 なぜかと言うと、Transformは座標移動を強制的に行うので、 物理計算が効きません。 単純に言うと壁をすり抜けたりします。 また、Transform移動中でも物理計算が行われている為、 物理計算の移動と違う移動量だと物理計算が再計算を繰り返す為、 リソースを取るんだとか、 なのでTransformを使う場合はKinematicにする必要があります。 アクション系は、物理計算を使いたいので、 Transformは封印して、違う方法を探す事に… Google先生に聞いたところ、 Rigidbodyには、直接移動命令を出す事ができるって事です。 これなら物理計算の恩恵を受け…

続きを読む

【Unity】Linecastを使って床や壁を判断する

横スクロールアクションを作ってみると言う事で AnimationのBone&IKを勉強しました。 モーションも作れるようになってきたので、 いよいよ実際のアクションを作っていこうと思います。 アクションとしては、走る・ジャンプ・スライディング・登るを想定していて、 状況に合わせて、Animationを切り替えていければと考えています。 さて、アクションを切り替えるには?って事なんですが… 当然、床の上なら走るモーションです。 壁が来たら登るモーションに切り替えたいのですが、 どうすればいいかとなります。 ColliderのisTriggerで接触判定を出せば、壁と判断はできそうですが… そうなんです、isTriggerを設定するとオブジェクトをすり抜けて行くんですよね。 (~ヘ~;)ウーン なので、isTriggerを設定しなくても壁を認識させる必要があります。 そこで便利な物が用意されています。 レイキャスターです。 Rayとは、日本語なら光線の意味になるんですが、 Unityでは、見えない線と考えてもらうと分かりやすいかと思います。 このRayは、センサーの役割をします。 種類もいろいろあるのですが、 ・Raycast 指定座標から指定方向へ一直線の線を飛ばします。 ・Linecast 指定座標から指定座標まで線を張ります。 ・Boxcast 箱型のRayを指定座標・指定方向・指定距離にセットします。 ・Sp…

続きを読む

【Unity】アニメーションのお勉強(IK編)

前記事でBoneについてまとめましたが、 骨格を設定すれば、スプライトを動かせる事が分かりました。 一つのスプライトからモーションが作れるので、 便利なんですが、更にIKなるものが存在すると言う事で、 試してみたいと思います。 まずIKについてですが、インバースキネマティクスの略なんだそうです。 連続した骨格の先端から動かす事で親になる骨を連動させる方法なんだとか。 簡単に言うと、物を掴む動作を設定したい場合、 肩・肘・手と骨格を動かす事になるのですが、 角度を調整するのが結構難しかったりします。 IKを入れる事で、手を掴みたい物に寄せると 肩や肘がコンピューターの計算で自動的に連動する仕組みとなります。 子骨から親骨を連動させる仕組みと言った方が分かり易いでしょうか。 反対にFK(フォワードキネマティクス)ってのがあるそうですが、 UnityではIKが使えるので、早速勉強してみたいと思います。 IKを使うにあたって、骨格が無いと扱えないので、 前記事のアンドロイドを使っていきます。 骨格の設定については、前記事を参照下さい。 今回は、IKを使って走るモーションを作成してみます。 まず、アンドロイドにIKを導入する為、準備をします。 ヒエラルキーの一番下に空のオブジェクトを作成して、IKとリネームしておきます。 このIKオブジェクトにIKManager2Dコンポーネントをアタッチします。 コンポーネントの一…

続きを読む

【Unity】アニメーションのお勉強(Bone編)

長らく体重管理アプリに取り掛かっていて、 本題のゲーム作成の勉強が進まなかった、今日この頃なんですが… 体重管理アプリも一応?完成と言う事で、 本題のゲーム作りの勉強を再開して行こうと思います。 今、作ってみたいゲームがあって、 アクション系の横スクロールゲームを作りたいなと思っています。 有名どころなんかだとマリオでしょうか。 マリオみたいなものは、作れる気はしないのですが、 とりあえず動き物を作ってみたいなと思っています。 最近のアクション系は、モーション付きのキャラが普通になっていて、 昔のようにドット絵のキャラが動くだけとは違います。 そこで、キャラのモーションを付ける勉強をしてみようと思います。 以前、アニメーションを勉強した時は、 モーション毎のスプライトをパラパラ漫画のように 差し替える事で動きを付けていましたが、 モーションのスプライトが大量に必要になります。 絵が描けないケロには、無理な話なので諦めていたのですが、 Boneを設定すると動かす事ができるって事を知りまして、 勉強してみる事にしました。 まず、Boneとはなんぞや?って事なんですが、 単純に❞骨❞でっす。 スプライトに骨格を設定する事で動きを自由に付けられる との事なんですが、 早速、導入して試して行こうと思います。 まずスプライトをインポートするのですが アンドロイドのpngを使おうと思います。 ただ、一枚絵…

続きを読む

【Unity】フリックカレンダーの修正と改良

前回記事の続きとなります。 フリックでスクロールするカレンダーができたのですが、 タッチパネル上から指が離れるとドロップのメソッドが呼び出せない。 これは操作系としては欠点なんで、修正案を考えてみました。 あと、Drop時にタッチパネルを、強制的に指定座標まで移動させていますが、 瞬間移動するので、スクロールしているように見えません。 この辺りも改良する必要があるので、同時に考えてみたいと思います。 まず、おさらいなんですが… オブジェクトをドラッグする際、 必ず指やマウスがオブジェクト上にあると思います。 しかし、今回のドラッグは縦移動を制限しているので、 上下に指を動かすとオブジェクトから離れた状態になります。 EventtriggerのDropは、あくまで、 オブジェクト上の指が、Dropした時だけ呼び出されるようになっています。 オブジェクト上に指がない状態では、 Dropしても呼び出されない仕様なんですね~ (T-T) グスッ なので、タッチパネルから外れた所でDropすると カレンダーが変な位置で停止します。 と言う事で、 オブジェクト上に指がある事を認識させる必要があります。 まず、ドラッグの範囲を限定しようかと考えたのですが、 Androidの場合、画面サイズによってScreenWorldのポイントが変化します。 座標からドラッグできる範囲を指定するのは、 かなり面倒な計算が必要に…

続きを読む

【Unity】カレンダーのフリックScrollを考える

2021/02/26タイトル変更・一部修正 体重管理アプリが完成して、 嫁にアプリを使って貰っているのですが… 嫁:今時フリックでめくれないの? カレンダーの月切り替えがボタン仕様なので、 こんな会話になりました。 ありがたい嫁クレームと言う事で、 カレンダーのフリック切り替えを考えてみたいと思います。(T-T) グスッ ただ注意点として、 カレンダーが表示だけの仕様なので、 日付毎に入力ボタンなどを実装する場合には、 使えないって事をあらかじめお伝えしておきます。 まず、フリックでカレンダーを切り替えるにあたり 二つの事を考えました。 ・常時フリック入力を監視するのか? ・月表示だけを切り替えるのか? 常時フリック監視は、Update内で出来るのですが、 ボタンなどの操作を考えると、あまり宜しくない状態になるので、 カレンダー上をフリックした時だけ反応するようにしたい。 月の切り替えは、表示だけ変更するより、 横から前後の月がスクロールしてくる方が見た目が良い。 こんな感じで処理を考える事に… まず、フリック操作になるんですが、 カレンダーの枠ImageにEventtriggerを仕込んで、 タッチ操作に反応できるようにすればOKなんですが… 前後月も同時にスライドする必要があるので、 単純に表示月の枠を移動させるだけでは動かないなと… それに前後月も用意する必要があります。 …

続きを読む