Created
February 15, 2019 06:42
-
-
Save 2RiniaR/c30efb0124de96c8e4c4973ff911e7a2 to your computer and use it in GitHub Desktop.
UnityでMinecraftみたいなカメラの挙動を実装するスクリプト
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
/* | |
【 マウス+WASDキーによるカメラ操作 】 | |
作成者:watano | |
必ずカメラにアタッチしてください。 | |
Space : 上移動(+y) | |
Shift : 下移動(-y) | |
W : 前移動(+z) | |
S : 後移動(-z) | |
A : 左移動(-x) | |
D : 右移動(+x) | |
マウス移動 : カメラの向きを調整 | |
@param | |
float MoveSpeed //カメラ移動速度 | |
float RotationSpeed //カメラ回転速度 | |
bool isCursorVisible //カーソルを表示するか | |
*/ | |
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
using System.Runtime.InteropServices; | |
[RequireComponent(typeof(Camera))] | |
public class MoveCamera : MonoBehaviour { | |
public float MoveSpeed; | |
public float RotationSpeed; | |
public bool isCursorVisible; | |
Camera MyCamera; | |
Transform MyTransForm; | |
private Vector3 NewAngle = new Vector3(0, 0, 0); | |
// Use this for initialization | |
void Start () { | |
MyCamera = GetComponent<Camera>(); | |
MyTransForm = MyCamera.GetComponent<Transform>(); | |
} | |
// Update is called once per frame | |
void Update () { | |
Rotate(); | |
Move(); | |
Cursor.visible = isCursorVisible; | |
} | |
void Rotate(){ | |
NewAngle.y += Input.GetAxis("Mouse X") * RotationSpeed; | |
NewAngle.x -= Input.GetAxis("Mouse Y") * RotationSpeed; | |
NewAngle.z = 0; | |
if(NewAngle.x < -90) NewAngle.x = -90; | |
if(NewAngle.x > 90) NewAngle.x = 90; | |
MyCamera.transform.localEulerAngles = NewAngle; | |
} | |
void Move(){ | |
Vector3 Move_Y = new Vector3(0, 0, 0); | |
Vector3 Move_XZ = new Vector3(0, 0, 0); | |
Move_Y.y += Input.GetAxisRaw("Vertical_Y") * MoveSpeed; | |
Move_XZ.x += Input.GetAxisRaw("Horizontal_X") * MoveSpeed; | |
Move_XZ.z += Input.GetAxisRaw("Horizontal_Z") * MoveSpeed; | |
MyTransForm.position += Move_Y; | |
Vector3 MoveXZcross = MyTransForm.rotation * Move_XZ; | |
MyTransForm.position += new Vector3(MoveXZcross.x, 0, MoveXZcross.z); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment