【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…

続きを読む