マウスクリック中はダッシュする
- var target : Transform; //追いかけるターゲット
- private var targetPosition : Vector3; //ターゲットの位置
- private var pointOfGaze : Vector3; //オブジェクトの注視点
- private var distanceXYZ :Vector3; //オブジェクトとターゲットの距離(XYZ)
- private var angleForTarget : float; //Z軸に対してオブジェクトとターゲットがなす角度
- var normalMovingSpeed :float; //標準時の移動速度[m/s]
- private var MovingSpeed :float; //実際の移動速度[m/s]
- var dashScale : float; //ダッシュ時の倍率
- private var movingDistanceXYZ : Vector3; //1フレームで移動する距離
- private var degToRad = Mathf.PI / 180; //変換 degree → radian
- function Update () {
- targetPosition = target.transform.position; //ターゲットの位置を取得
- distanceXYZ = targetPosition - transform.position; //ターゲットとオブジェクトの距離
- if(distanceXYZ.magnitude > 0.5){ //ターゲットが近すぎる際に向きが頻繁に変わるのを防ぐ
- //ターゲットの方へ向かせる処理--------------------------------
- pointOfGaze = targetPosition;
- pointOfGaze.y = transform.position.y; //y軸方向には回転させない
- transform.LookAt(pointOfGaze);
- //--------------------------------------------------------
- angleForTarget = transform.eulerAngles.y;
- //左クリック中はダッシュにする-------------------------------
- movingSpeed = normalMovingSpeed;
- if(Input.GetMouseButton(0)){
- movingSpeed *= dashScale;
- }
- //-------------------------------------------------------
- //1フレームあたりの移動量を求める---------------------------
- movingDistanceXYZ.x = movingSpeed * Mathf.Sin(angleForTarget * degToRad) * Time.deltaTime;
- movingDistanceXYZ.z = movingSpeed * Mathf.Cos(angleForTarget * degToRad) * Time.deltaTime;
- movingDistanceXYZ.y = 0;
- //-------------------------------------------------------
- transform.position.y = target.transform.position.y; //オブジェクトの高さをターゲットと合わせる
- transform.position += movingDistanceXYZ; //オブジェクトの座標に移動量を加える
- }
- }