誰も教えてくれないblog

お絵描きとかグラブルとか

えもふりでVtuberの真似事をする④ マウスに目線を追従させる

前回までだと棒立ち口パク人形なので、Vtuberらしく動かしてみる。

完全に追従すると動き過ぎてキモいので、割とざっくりとさせるつもりだ。

f:id:GinMei182:20200329151441p:plain

 

①前回と同じく、新しいC#scriptを作成し、中身を書き換えて保存。(私自身はプログラマーじゃないので、クソコードしか書けない。書ける人は自分なりに直してほしい。)

今回はTest2で作った。

f:id:GinMei182:20200329151754p:plain

public class Test2 : MonoBehaviour
{
public EmotePlayer targetPlayer;
public float tilt_X;
public float tilt_Y;
private Vector3 position;

// Start is called before the first frame update
void Start()
{
if (targetPlayer == null)
targetPlayer = this.GetComponent(typeof(EmotePlayer)) as EmotePlayer;

tilt_X=0;
tilt_Y=0;

}

// Update is called once per frame
void Update()
{

position = Input.mousePosition;

if (tilt_X<(position.x-500)/8 && tilt_X<15) tilt_X += 1;
if (tilt_X>(position.x-500)/8 && tilt_X>-15) tilt_X -= 1;
if (tilt_Y<(position.y-300)/15 && tilt_Y<15) tilt_Y += 1;
if (tilt_Y>(position.y)-300/15 && tilt_Y>-15) tilt_Y -= 1;

targetPlayer.SetVariable("face_eye_LR" , tilt_X , 0, 0);
targetPlayer.SetVariable("head_LR" , tilt_X , 0, 0);
targetPlayer.SetVariable("face_eye_UD" , -1*tilt_Y , 0, 0);
targetPlayer.SetVariable("head_UD" , -1*tilt_Y , 0, 0);
}
}

 

②そろそろ仕様が分かってきた頃。前回と同じく、さっき作ったプログラムをEmote PlayerへAdd Componentする。

f:id:GinMei182:20200329152118p:plain

 

③再生を押すと、目線である程度追ってくれる。

あまり角度を傾けると、不自然に見えるので、完全には追従していない。

 

ちなみに最初はキー入力で操作するように作ったが、ゲーム中に顔がブンブンしてもアレなのでやめた。