Created
November 17, 2013 01:24
-
-
Save kankikuchi/7507775 to your computer and use it in GitHub Desktop.
Unity 移動+視点移動(未完)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class PlayerController : MonoBehaviour { | |
//移動 | |
private float walkSpeed = 50.0f; //移動速度係数 | |
private float gravity = 10.0f;//重力加速度 | |
private Vector3 velocity;//現在の移動速度 | |
//回転 | |
private float RotSpeed = 90.0f; //回転速度係数 | |
private float LimitRotX = 50f; //回転可能限界 | |
//CharacterController | |
private CharacterController controller; | |
//================================== | |
//初期化 | |
//================================== | |
void Start () { | |
//CharacterControllerを取得 | |
controller = GetComponent<CharacterController>(); | |
} | |
//================================== | |
// ループ | |
//================================== | |
//キャラクター移動 | |
void PlayerMove(){ | |
//移動速度 | |
float SpeedX = 0f, SpeedY = -gravity, SpeedZ = 0f; | |
/////キー入力確認 各キーが押されているか | |
if (Input.GetKey(KeyCode.A)){ | |
SpeedX = -1f; | |
} | |
else if (Input.GetKey(KeyCode.D)){ | |
SpeedX = 1f; | |
} | |
if (Input.GetKey(KeyCode.W)){ | |
SpeedZ = 1f; | |
} | |
else if (Input.GetKey(KeyCode.S)){ | |
SpeedZ = -1f; | |
} | |
//バーチャルパッドのオブジェクト取得 オブジェクト名 : Joystick | |
GameObject Joystick = GameObject.Find("Joystick"); | |
//バーチャルパッドのオブジェクトのスクリプトを取得 スクリプト名 : MpJoystick | |
MPJoystick JoystickScript = Joystick.GetComponent<MPJoystick>(); | |
//パーチャルパッドがタップされている マウスではタップ出来ない | |
if(JoystickScript.tapCount > 0){ | |
//スピードを設定 | |
SpeedX = JoystickScript.position.x; | |
SpeedZ = JoystickScript.position.y; | |
} | |
//スピード設定 | |
velocity = new Vector3( SpeedX * walkSpeed , SpeedY , SpeedZ * walkSpeed ); | |
//キャラクターコントローラーの移動 | |
controller.Move(velocity * Time.deltaTime); | |
} | |
//キャラクター回転 | |
void PlayerRotation(){ | |
//回転速度 | |
float RotX = 0f , RotY = 0f; | |
/////キー入力確認 各キーが押されているか | |
if (Input.GetKey(KeyCode.LeftArrow)){ | |
RotY = -1f; | |
} | |
else if (Input.GetKey(KeyCode.RightArrow)){ | |
RotY = 1f; | |
} | |
if (Input.GetKey(KeyCode.UpArrow)){ | |
RotX = -1f; | |
} | |
else if (Input.GetKey(KeyCode.DownArrow)){ | |
RotX = 1f; | |
} | |
//回転予定角度X | |
float NextRotX = transform.eulerAngles.x + RotX * RotSpeed *Time.deltaTime; | |
//x方向の回転を制限 回転可能角度外 | |
if(NextRotX > LimitRotX && NextRotX < 360f - LimitRotX){ | |
//下と上のどちらから可能角度を超えたか それに応じて制限 | |
NextRotX = NextRotX > 180f ? 360f - LimitRotX : LimitRotX; | |
} | |
//回転 | |
transform.rotation = Quaternion.Euler( | |
NextRotX, | |
transform.eulerAngles.y + RotY * RotSpeed *Time.deltaTime , | |
transform.eulerAngles.z | |
) ; | |
} | |
//フレーム毎に呼び出される | |
void Update () { | |
//キャラクター回転 | |
PlayerRotation(); | |
//キャラクター移動 | |
PlayerMove(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment