
認識相違
連日の猛暑で体が少し溶けている気がするのに体重は増えている認識相違が甚だしい皆さんこんにちは。この季節になると熱中症に気を付けて日中はできるだけ室内で過ごし水分補給にジュースやアイスを口にする機会が増えますが、その分、別のところが不健康になっている気がします。どうしよう。
新ステージ作成中
前回の記事でもお伝えしましたがリズムアクションゲーム「Under A Groove」を8月3日に開催される東京ゲームダンジョン9に出展する為、それに向けて新ステージを作成中です。

現状、東京ゲームダンジョン9までに新ステージが完成するかギリギリのところなんですが、序盤の箇所を動画にしてXにポストしたら予想外に「いいね」を多くもらえたので期待を裏切らないよう頑張りたいと思います。
リズムアクションゲーム「Under A Groove」
— カバン@Stab of Bee Project (@karvan1230) 2025年7月12日
東京ゲームダンジョン9に向けて新ステージを作成中です。
開催まで一か月を切り、間に合うかギリギリですが、良いものになるよう頑張ります。
3B-7でお待ちしています。#スーパーゲ制デー #ゲムダン9 pic.twitter.com/ELb2KRCp1O
東京ゲームダンジョン9での出展ブースは「3B-7」ですが、もし当日現場に来て上の映像が流れてなかったら「間に合わなかったんだな・・・」と察してください。
lossyScale
思えばUnityを触りだして結構な月日が経ちますが、つい先日Transformのプロパティの中に"lossyScale"という項目があることを知りました。
読み取り専用で変更する事ができないこのプロパティ、調べてみるとオブジェクトのグローバルスケールが設定されているようです。
幾つかのオブジェクトが親子関係となっている場合、子オブジェクトのlocalScaleは親側のlocalScaleに影響を受けるので、例えばあるオブジェクトのlocalScaleが(1.0, 0.5, 0.5)でlocalScaleが(1.0, 1.0, 1.0)となっているオブジェクトをそのオブジェクトの子供とした場合、子側のlocalScaleは(1.0, 2.0, 2.0)となります。
そしてオブジェクトのスケールはlocalScaleしかスクリプトで変更できないので、Unityエディタ上でうっかりlocalScaleが異なるオブジェクトを親子構造にしてしまうとスクリプトによるスケールの変更が思ったような挙動にならないケースも出てきます。
lossyScaleは親オブジェクトの影響受けない実際のスケールが設定されるので、この値を基準にlocalScaleを設定すると親オブジェクトのlocalScaleの影響受けずに一定のスケールを保つことができます。
/// <summary> /// lossy scale を 指定の値にする /// </summary> public static void SetLossyScale(Transform target, Vector3 scale) { target.localScale = new Vector3( scale.x / target.lossyScale.x * scale.x, scale.y / target.lossyScale.y * scale.y, scale.z / target.lossyScale.z * scale.z ); }
下の動画ではCubeと鹿のモデルでCube=親、鹿=子となっていおり、親(Cube)のlocalScaleを変更するとそれに併せて子(鹿)のスケールも変更されることが分かると思います。

これに鹿(子オブジェクト)側に先ほどのコードを使って一定のスケールを保つようなスクリプトをアタッチしてみます。

親(Cube)のlocalScaleの変化に影響されずにスケールを一定に保つことが出来ました。