これまではメインカメラを固定して客観視点で 3D 猫を動かしていましたが、これを猫視点の主観視点に変更しようと思います
まずはカメラの初期状態を変更
猫を後ろから追いかける感じに
あとはスクリプト修正
using UnityEngine; using UnityStandardAssets.CrossPlatformInput; using System.Collections; using UnityEditor.Animations; /// <summary> /// 入力制御クラス /// </summary> public class InputController : MonoBehaviour { /// <summary> /// 制御対象のキャラクターコントローラー /// </summary> public CharacterController PlayerController; /// <summary> /// 制御対象のアニメーター /// </summary> public Animator PlayerAnimator; /// <summary> /// メインカメラ /// </summary> public Camera MainCamera; /// <summary> /// Use this for initialization /// </summary> public void Start() { this.MainCamera = Camera.main; } /// <summary> /// Update is called once per frame /// </summary> public void Update() { if (this.PlayerController == null) { return; } // カメラは猫を追いかけるようにする var position = this.PlayerController.transform.position - this.PlayerController.transform.forward * 0.6f; this.MainCamera.transform.position = new Vector3(position.x, 0.3f, position.z); this.MainCamera.transform.rotation = this.PlayerController.transform.rotation; // 移動方向を決める var dx = CrossPlatformInputManager.GetAxis("Horizontal"); var dz = CrossPlatformInputManager.GetAxis("Vertical"); if (Mathf.Abs(dx) > 0.5f) { this.PlayerController.transform.Rotate(new Vector3(0, dx, 0), 1f); } // 移動速度を決める if (Mathf.Abs(dz) <= 0.1f) { this.PlayerAnimator.SetFloat("Speed", 0); return; } // 後退は速度固定 if (dz < 0) { dz = -0.5f; } var speed = new Vector3(dx, 0, dz).magnitude; this.PlayerController.SimpleMove(this.PlayerController.transform.forward * dz * 0.5f); if (this.PlayerAnimator == null) { return; } this.PlayerAnimator.SetFloat("Speed", Mathf.Abs(dz * 2f)); } }
カメラの向きや位置を猫に合わせるよう修正し、ジョイスティックでの操作も左右で回転、上下で前進後退になるように変更しました
これで動かすと・・・
球を転がし続けやすくなりました