【Unity】壁の移動処理で悩む(モーション導入)

前回更新から少し時間が経ってしまったんですが、 ようやくアンドロイド君にモーション付きの壁登りが 実装できたので、記事にしてみようと思います。 なかなか思うモーションが作れなくて、 あれでもないこれでもないとAnimationと格闘しておりました。 正直、時間をかけた割には、出来栄えは酷いです。(T-T) グスッ まず、アンドロイド君を壁登りさせる為に上方向の移動処理を考えてみます。 【Unity】壁の移動処理で悩む この記事で書いた内容を応用しながら作って行こうと思います。 壁に張り付いた状態を確認する為にLinecastを設定します。 ActionTest private bool frontRay; //前方Ray //Rayの設定 private void SetLinecast() { //LineCast用座標設定 Vector2 frontP1 = transform.position + (transform.right * 1.1f); Vector2 frontP2 = transform.position + (transform.right * 1.1f) - (transform.up * 2.15f); //前方センサー frontRay = Physics2…

続きを読む

【Unity】Linecastをもう少し勉強してみた

以前、壁登りの処理を作ったのですが、 モーション付きで実装するのが難しくて、うまく処理できない。 こんな感じで停滞している毎日なんですが、 少し、おや?って事があったので、調べる事にしました。 コースとしては、高台があって壁登りで上に上がります。 上に上がったら走り出すようにしたいので、 高台はFloorレイヤー(茶色)で作成して、 登り用のWallレイヤーの壁(黒色)を左側にくっ付けて、 登り切った所でFloorレイヤーを読み取って、走り出す設定にしました。 ところが、上に着地しても走りだしのモーションが呼び出されない! なんで??となりました。 足元に張っているLinecastは、Floorレイヤーに反応するように設定しているのに… と言う事で、モデルを作って検証してみる事に。 緑のブロックをプレイヤーとして、右方向に動かします。 床面はWallとFloorの二つのレイヤーで作って様子を見ます。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class LineCastTest : MonoBehaviour { private float rightOffset = 0.75f; private float downOffse = 0.76f; private Ra…

続きを読む

【Unity】RayCastを使って障害物との距離を測る

”障害物を乗り越える”をテーマに挑戦している日々なんですが、 曲がりなりにも越える処理を作る事ができました。 しかし、処理時間と転倒時に乗り越えモードの終了ができない、 二つの問題点が残っています(T-T) グスッ これを解決するのに四苦八苦しているのですが、 いろいろ考えて思いついたので、記事にまとめてみます。 まず、動作の安定感を出す為に問題点を出してみました。 乗り越えモーションは、 障害物(黒ブロック)の左にあるOverZone(青のCollider)と言うトリガーを利用して、 OverComeModeに切り替えています。 ゾーンの内部で上キーを押せば、乗り越えモーションに切り替わるように 設定しているのですが、ゾーンの幅が1.5スケールあります。 当然、接触と同時にキー入力すれば差は1.5となりますが、 障害物寄りでキー入力すると距離は変化します。 ブロックの幅が1スケールでモーション起点が0~1.5スケールあるので、 距離としては、1~2.5の幅ができます。 最大速度を10としてるので、通過時間に0.1~0.25秒の差があります。 なので、モーションの時間を0.5秒として処理していましたが、 速度も変化するって事が最大の難点になっています。 仮に速度を2で移動させた場合、 1スケール進むのに0.5秒掛かってしまいます。 ゾーンの左端でモーションを起動すると幅が1.5あるので、 障害物の手前で処理が終…

続きを読む

【Unity】障害物を乗り越える処理を考える

アクションを作ると言う事で試行錯誤しているのですが、 前回、障害物で転倒する処理を作りました。 ただ、障害物をジャンプで越えるだけでは、少しツマラナイので、 手を加えたいなと考えています。 追加するのは、「乗り越え」です。 当然、上手く作れないので、悪戦苦闘してる毎日なんですが、 とにかく挑戦あるのみでっす。(^.^; オホホホ さて、乗り越えって事なんですが… 操作としては、障害物の近くでキー入力すると 速度を落とさずに乗り越えて行く感じにしたいな~ なんて考えています。 思いついたのはいいですが、実際作るのは難しいので、 試行錯誤しながら記事にしていこうと思います。 正直作れるかも分からないんで、興味のない方は読み飛ばして下さい。 ┐(´~`;)┌ かんべんシテネ 現状、ジャンプは速度が落ちないので、乗り越えとの格差がありません。 この辺りを修正する必要があります。 まず、通常ジャンプと乗り越えで速度を変える為にスクリプトを調整します。 調整としては、ジャンプの速度を落とすようにします。 ActionTest private const float speedMax = 10f; //最高速度 private const float speedMin = 2f; //最低速度 void Update() { SetLineca…

続きを読む

【Unity】Animationカーブを使って加速を演出

2021/8/8 グラフの数値を訂正・追記 2021/8/11一部修正 前回、転倒モーションを作ってみたのですが、 内容は、障害物に躓くと一回転して座り込む感じで処理をしました。 座り込む際に止まって、立ち上がると走り出す感じなんですが、 走り出しでトップスピードになるのも少々困りものでっす(- .-)ヾ ポリポリ やはり走り出しは、加速していく感じにしたいので、 処理を考えてみました。 当初は、Updateで秒数を読み取りスピードに加算する方法にしたのですが、 調べてみるとAnimationカーブってのが存在するそうなので、 折角なら使ってみたいですよね(^.^; オホホホ 上手く作れたかは置いといて、処理を考えたので記事にします。 (;^o^) \(ToT )あんたほんとにそれでいいの まず、Animationカーブってなんぞや?てことなんですが、 アニメーションクリップでそのプロパティーの変化を時系列に制御 スクリプトリファレンス抜粋 書いてみましたが、ちょっと何言ってるかわかんない(-_-)ゞ゛ウーム 簡単に言うと、グラフを使って時間に沿った処理を行えるみたいです。 位置、大きさ、etc 本来、アニメーションクリップと連動させて使うみたいですが、 スクリプトからグラフの曲線を読み取る事ができるようなので、 利用してみたいと思います。 まずテスト用に床と移動用のボールを作ります。 加速の違いを比…

続きを読む