SceneView 内での World 座標取得

検索して出てくるコードではうまくいかなかった。Retina とかの高解像度の際のためかな? scaledPixelHeight でもだめだったけど、 EditorGUIUtility.pixelsPerPoint を使ったらうまくいった。

static StageGeneratorHelper()
{
    SceneView.duringSceneGui += OnSceneViewGUI;
    stageDebugger = Object.FindObjectOfType<StageDebugger>();
}

private static void OnSceneViewGUI(SceneView obj)
{
    Event e = Event.current;

    Vector3 mousePosition = Event.current.mousePosition * EditorGUIUtility.pixelsPerPoint;
    mousePosition.y = SceneView.currentDrawingSceneView.camera.pixelHeight - mousePosition.y;
    mousePosition = SceneView.currentDrawingSceneView.camera.ScreenToWorldPoint(mousePosition);
    mousePosition.z = 0f;

    // 適当なものを追従させる
    GameObject.Find("ゲームオブジェクトの名前").transform.position = mousePosition;
}

TextMesh Pro のマテリアルの入れ替え

TextMesh Pro 3.0.6 (Unity2021.3.4f1) で TMP のマテリアルを変えるとき。
1. tmp.fontSharedMaterial => tmp.font の順に変える
2. 同じ FontAsset の場合には登録はしなおさない
とかやらないと表示されなくなることがある?

Timeline でアニメーションが相対的になる

Animator で動かした場合と違って Timeline でたまに座標が相対的(?)になってしまうことがたまにあり??となってたけど、Timeline の Clip に Remove Start Offsetという設定があってこれをオフにしたら期待通りの動きになった。どういうときに On になって、どういうときに Off になるのかは不明。

fbx のアニメーションの名前

Blender から Unity に fbx を持ってきた際にアニメーションの名前の前に Armature の名前が自動で付くけど、どこで変えるかよく忘れるのでメモ。
Import Settings の Animation タブで、Clip を選択して名前を変更。
更新するか聞かれるので OK。ただこれをやると fbx を更新しても Unity に反映されなくなる?

TextMesh Pro のアニメーション

TextMesh Pro の文字を動かす方法。
1文字づつが4頂点あるのでそれを動かすと動く。新たに文字をセットするとすべてリセットされる。
CPU で動くので本当は Shader でやるとよさそう。

TMP_CharacterInfo characterInfo = this.tmpText.textInfo.characterInfo[charIndex];
int vertexIndex = characterInfo.vertexIndex;
Vector3[] vertices = this.tmpText.textInfo.meshInfo[characterInfo.materialReferenceIndex].vertices;

for (int j = 0; j < 4; ++j)
{
    int index = vertex_index + j;
	vertices[index] = // 座標を入れる
}

Raspberry Pi と Unity


Raspberry Pi4 を買ってちょっと遊んでる。
いったん簡単なサンプルができたので自分メモ。
作ったのはタクトスイッチを押したら Python から LED を光らせつつ OSC を Mac に送り、Mac 側の Max で受信。それをそのまま Unity で再び OSC で localhost に渡してキューブに AddForce() とかをさせる。
Max を使わず Unity で直接 OSC で受けてもいいけど単純に使ってみたかったのだけ。

Continue…

4ch のサウンド


Unity2019/2020 で4chのサウンドで右後ろの音が鳴らないような…
Windows でサウンドの設定を Quad に、Unity 上も Quad。
Project Window でのプレビューでは問題なく鳴るけど、実行すると鳴らないのでバグかな…?

Chrome(Win) で WebGL のりサイズをした際に UI が消える

条件がわからないですが、WebGL 書き出しで Windows の Chrome のみで WebGL 部分をリサイズさせると UI が表示されなくなることがありました。関係あるかわからないけど分かっている条件は

・Universal Render Pipeline
・UniversalRenderPipelineAsset の Anti Aliasing(MSAA) は Disabled
・Canvas は Screen Space – Camera
・指定している Camera の Anti-Aliasing が Fast Approximate Anti-alliasing 以外 で発生

追記) 2020.04.01
デプステストを常に通過させるようにすると直るようです。