Canvas上にない、3D空間にあるキャラクターグラフィックの横に吹き出しセリフを追加したい場合、2つの方法があります。
Sprite
Spriteを3D空間に設置し、Spriteの子にuGUIのTextを作ります。するとTextの親にCanvasが追加されますので、Screen Space -Cameraにします。
Image
CanvasにImageとその子にTextを作ります。スクリプトでImageの座標として、キャラクターのWorld座標からスクリーン座標に変換したものを与えます。
var screenPos = RectTransformUtility.WorldToScreenPoint(Camera.main, characterTransform.position)//スクリーン座標 var viewportPos = Camera.main.WorldToViewerPoint(characterTransform.position);//ビューポート座標
ビューポート座標は画面座標をX,Yそれぞれ0~1の範囲に変換したもので、これを利用する事でビューポート座標xが0.5より小さいなら吹き出しImageのpivotのxを0に、大きいなら1にするという感じで、スクリーン解像度に依存せず吹き出しの表示場所をキャラの左右に入れ替えたりする処理が可能です。
コメント