osGetDrawStringSize()の挙動

osGetDrawStringSize()の挙動

von 堀田 海月 -
Anzahl Antworten: 2

プリムの面に直接テキストを表示させるために、osGetDrawStringSize("vector", "Porta Land", "Arial", 24) で大きさを測って中央抑えにしようとしてるのですが、Porta Landに限ってこの関数の結果が、<0.0, 1.0, 0.0>固定になってしまいます。

同じスクリプトを入れたオブジェクトを、Sandbox2、Sandbox3、JOG meets、Wadatsumiへと持って行って試したのですが、数値に多少の違いはありましたが概ね問題のない数値が出ていました。

default
{
    state_entry()
    {
        face = 0;
        string text = "Porta Land";
        vector size = osGetDrawStringSize("vector", text, "Arial", 24);
        integer posx = 128 - ((integer)size.x >> 1);
        integer posy = 127 - ((integer)size.y >> 1);
        string CommandList = "";
        CommandList = osMovePen(CommandList, posx, posy);
        CommandList = osSetFontSize(CommandList, 24);
        CommandList = osDrawText(CommandList, text);
        osSetDynamicTextureDataBlendFace("", "vector", CommandList, "width:256,height:256", FALSE, 2, 0, 255, face);
    }
}

これでテクスチャの中央にテキストが表示されるのですが、先ほどのように大きさが<0.0, 1.0, 0.0>と出力されてしまうので、真ん中にはなりません。

Simの再起動でも直りませんでしたので、調査をお願いいたします。