【Unity】Rayで接触するオブジェクトを判断させる

よじ登りの処理が作れたのですが、 バグと言うか思った動作をしてくれない部分があって、 悩んでいる今日この頃なんですが… 何がおかいしかと言うと、 壁に接触した状態から登って行くと、うまくよじ登るようになったんですが、 壁に向かってジャンプして、壁に張り付く前に上端に届くと、 上手く登ってくれない状態なんです。 ( ノД`)シクシク… また、タイミングによっては、壁の上によじ登っても、 走り出さずに同じモーションを繰り返すなんて事も起こっています。 この辺りを解消しないと動きとしては問題になります。 まず、登り切った所でモーションを繰り返す原因を考えてみたのですが、 青い線がRayです。 足元のオブジェクトが、白が壁でWallレイヤー、茶色が床でFloorレイヤーとしています。 スクリプトでは、 ActionTest public LayerMask floorLayer; private bool bodyUnder; //体下Ray void Update() { SetLinecast(); //床の接触判定 if (bodyUnder) { FloorAction(); } else VerticalMotion(…

続きを読む

モニターをデュアル化してみた

今回は、Unityとは関係ない話なんで興味のない方は、 読み飛ばして下さい。 以前、ノートPCが壊れた話を書いたと思いますが、 それ以来、デスクトップで作業を行っていました。 このデスクトップは、注文品で本体のみ購入したものでして、 モニターを買うと高くつくって事で、部屋にあった液晶テレビを兼用で使っています。 意外とモニターとして使えています。 話は変わって、少し暗くなる話で申し訳ないんですが、 施設に入れていた母が、去年亡くなりました。 当然、荷物を引き上げないといけないのですが、 衣類や備品など、廃棄できる物は施設でやってくれるんですが、 家電なんかだと、こちらで処分する必要があります。 ま、家電といってもテレビだけだったので大した事なかったんですが… ただ、アクオス24インチと小さい上に、家では主要な部屋にテレビがあるので、 正直、持って帰っても使い道がないんですよね。(- .-)ヾ ポリポリ 元気に映るんで、捨てるのも…  って事で、 半年ほどPC部屋で埃を被っていました。 (;^o^) \(ToT )ツカワナイホウガモッタイナイ ケロの状況は、ここまでにして、 皆さんに伺いたいのですが、デュアルモニター使ってますでしょうか? デュアル化して分かったのですが、ホントに便利です。 まだの方は、ぜひデュアル化をおすすめします。 ケロの作業状態なんですが、 ・Unity ・VisualStud…

続きを読む

【Unity】壁をよじ登らせる

前回、壁の上端まで登った所で止める処理を作りました。 ここからは、少し手間のかかるよじ登りのモーションを作ってみます。 正直、出来がよくないので少し恥ずかしいのですが、 ま、今まで作った処理も出来がよくないので、 構わず記事にしようと思います。 (;^o^) \(ToT )あんたほんとにそれでいいの よじ登りなんですが、 壁の上端で停止 → 手を壁の縁に掛ける → Animationで登る動き と、こんな流れで簡単に作れそうです。 早速、Animationを作っていきます。 サンプルレートを10に設定して、0:1毎にモーションを作ります。 サンプルレートを10にしておくと0:1=0.1秒で計算しやすいからでっす。 アンドロイド君の白背景がColliderの範囲になります。 まず、壁の上に手を掛けないと登れないので、 Collider範囲の右側より外に手を出しておきます。 壁に張り付いている時は、手が掛けやすいのですが、 飛びついた場合は、壁とアンドロイドの距離が開くので、 手が届かない事が起こります。 なので、手を掛ける部分を0.2秒ほどキープしておいて、 壁に掛かるようにします。 これでモーションができたので、スクリプトを作ります。 ActionTest using System.Collections; using System.Collections.Generic; using UnityEngine; …

続きを読む

【Unity】壁の上端で飛び上がりを止める

あけましておめでとうございます。 本年度もよろしくお願いします。 10月くらいから処理が上手く作れなくなって、 悩みに悩んで、年を越してしまいました。 長らく休んでいると、記事の書き方を忘れてしまって、 うまく説明ができるか分かりませんが、2022年も始まったので、 心機一転、頑張って行こうと思います。 ただ、ヤル気がどこまで続くかは、分かりませんが… (°-°;)ヾ(-_- ;) シモシモ・・ 去年までの振り返りなんですが、 壁登りの処理を曲りなりにも作る事が出来ました。 ただ、壁の上端に差し掛かった所で、大きくジャンプしてしまうってのが、 気に入らないと言うか納得いかない部分でして… 上端に差し掛かった所で壁をよじ登れないかと試行錯誤していたのですが、 正直、上手く処理が作れませんでした。 何パターンか試したのですが、全然上手く行かなくて、 o(><)(;><)o ジタバタ となって、投げ出していたのが本音なんです。 (..*) オハズカシイ・・ 四苦八苦しながら、一応の処理が作れたので、 順次、記事にまとめていこうと思います。 まず壁登りなんですが、AddForceでジャンプさせています。 壁の上端近くでJumpするとAddForceなので、 壁が終わっているのに大きく飛び上がる事になります。 壁の上が広い足場なら飛び上がっても問題ないのですが、 狭い足場なら飛越えてしまい…

続きを読む

【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 本来、アニメーションクリップと連動させて使うみたいですが、 スクリプトからグラフの曲線を読み取る事ができるようなので、 利用してみたいと思います。 まずテスト用に床と移動用のボールを作ります。 加速の違いを比…

続きを読む

【Unity】転倒モーションを作ってみる

スライディングまで作る事ができたので、 少しづつモーションを増やしていこうと思っているのですが、 キャラの制御処理が複雑になって、バグ祭り真っ最中のケロです(T-T) グスッ コロナで軒並み夏祭りが中止になっているのに、バグの祭りは大盛況でっす。 ( ̄ .  ̄)ノ" ナンデヤネン コロナとバグは早く治まって欲しいでっす。 愚痴から始めてしまいましたが、 そろそろ本題に戻ります。 今回は、店頭… もとい、転倒モーションを追加してみたので、 記事にしてみます。 まず転倒と言う事で、簡単に処理するならZ軸をフリーにするのが手っ取り早いのですが、 そうすると床との摩擦で回転するようになるので、 正直おすすめできません。 特に手足のモーションを入れていると 走ったままの態勢で回転するので、見た目に転倒していません(^.^; オホホホ 当然、アニメーションを追加して転倒モーションを作る必要があります。 転倒モーションの条件として、 ・障害ブロックで転倒する ・転倒したら動きが止まる この辺りを作る必要があるので、考えてみたいと思います。 アニメーションを作るのですが、 キャラの動作範囲が分かるように白背景を設定しておきます。 転倒は上下動が入ってくるので、 白背景の上下を基準にアニメーションの座標を設定します。 ただコケるだけでは見た目が面白くないので、 回転する要素を入れてみます。 当然、転倒回転中…

続きを読む