残暑
今年の夏はあまりに猛暑なので首掛けの扇風機を購入して通勤中に使っていたら、満員電車の中で目の前の女性の髪を吸い込んでしまい大変なことになった皆さんこんにちは。幸いスイッチを切ったらすんなり解けたので良かったのですが、めっちゃ睨まれた。
unity1week
評価期間が終わり結果が発表されましたが、相変わらずお絵かきガチ勢が強いなぁという印象です。特に奇麗なピクセルアートを見せる作品は評価が高く、絵作りの強さが楽しさや雰囲気、斬新さといった他部門の評価も引っ張り上げている傾向。見た目は大事ですね。
ジャンル的には製作期間が一週間という短い期間のため、いつもはパズルや2D横スクロールといったジャンルが多いのですが、今回はガッツリとしたAVGや疑似3Dっぽいアクションゲームもあったりしてバラエティに富んでいました。
まぁこれは評価期間が二週間に伸びたので、その分を製作期間に充てて製作する人が多かった事も一因かもしれません。
ちなみに私の作品は箸にも棒にも掛からぬ、といった具合だったので特に述べることはないです。
段々と投稿数が増えたり(今回は500!作品)、チームを組んで挑む人が増えたり、と盛り上がり傾向にあるunity1week
レベルが上がり過ぎてビビるんですが、これからも出来るだけ挑戦していきたいと思います。
みんなの味方DOTween
さて、製作中の脱出ゲーム内で下の図のようなギミックを作っています。
下のほうにある列車のおもちゃを線路に沿って走らせるのですが、こういう場合に使えるのがみんなの味方DOTweenのDOPathというメソッドです。
var doPath = transform.DOPath(path, duration);
var doLocalPath = transform.DOLocalPath(path, duration);
pathはVector3の配列です。(Listじゃない)
pathで指定された座標(WayPoint)を順に向けて移動するアニメーションを作成できます。
なので、あらかじめ線路上に列車の通るポイントを指定しておいて、各車両のtransformにDOPathを使用して移動させるようにします。
下の図内の青い四角がDOPathで指定するポイント
で、実際に動かしてみると
・・・・・
確かに線路上を移動していますが、明らかに脱線しています。各車両が進行方向に沿って回転していないのが原因です。
つまり進行方向に向かわせる処理が必要なのですが、そうしたときにはSetLookAtオプションを使用します。
SetLookAtオプション
その名の通り、Tween中のオブジェクトの向きを動的に更新してくれる設定です
var doPath = transform.DOPath(path, duration).SetLookAt (0.05f, Vector3.forward);
第一引数で指定した秒数先の方向が第二引数で指定した向きになります。
上のコードの場合なら、正面方向が0.05秒後に移動する位置の方向を向く、という指定になります。
実際に動かしてみるとこんな感じ
各車両が進行方向に沿った向きを向いてくれるようになりましたが、カーブ辺りの動きに違和感があります。連結部分が切れるような感じ。
こういった場合には、第一引数の値を小さくします。調べると最小値は0.0001fらしいので思い切って0.001f辺りを指定します。
今度はカーブでもスムーズな動作になりました。