こいつをMainCameraにアタッチして使う。
探せばこんな記事いくらでもありそう。車輪の再^n発明
僕は賢くないのでperplexityに8割くらい手伝ってもらった
操作方法はMを押したらマウスがロックされて視点移動ができるようになる。ESCで解除。
camera_WASD.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class camera_WASD : MonoBehaviour
{
//移動速度
private float _speed = 3.0f;
//x軸方向の入力を保存
private float _input_x;
//z軸方向の入力を保存
private float _input_z;
//FPSモード。マウスをロック。
private bool isMouseLocked = false;
void Update()
{
//鉛直方向
float input_Y=0;
//FPSモード
// Mキーでロック
if (Input.GetKeyDown(KeyCode.M))
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
isMouseLocked = true;
}
// ESCキーで解除
if (Input.GetKeyDown(KeyCode.Escape))
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
isMouseLocked = false;
}
if (isMouseLocked)
{
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
// Y軸(コマの回転)に+1度、X軸(水車の回転)に+2度加算
Vector3 angles = transform.eulerAngles;
angles.y += mouseX; // Y軸(コマ)
angles.x += -mouseY; // X軸(水車)
transform.eulerAngles = angles;
}
//移動
//x軸方向、z軸方向の入力を取得
//Horizontal、水平、横方向のイメージ
_input_x = Input.GetAxis("Horizontal");
//Vertical、垂直、縦方向のイメージ
_input_z = Input.GetAxis("Vertical");
//上や下にいかないように(向いてる方向で上や下にも行っていいならこう)
//transform.position += transform.forward * _input_z * _speed * Time.deltaTime;
//transform.position += transform.right * _input_x * _speed * Time.deltaTime;
Vector3 forward = transform.forward;
forward.y = 0;
forward = forward.normalized;
Vector3 right = transform.right;
right.y = 0;
right = right.normalized;
if (Input.GetKey(KeyCode.Q)) //Qで下降
{
input_Y = -1f;
}
else if(Input.GetKey(KeyCode.E)) //Eで上昇
{
input_Y = 1f;
}
transform.position += (forward * _input_z + right * _input_x+new Vector3(0,input_Y,0)) * _speed * Time.deltaTime;
}
}
今思ったんだけどGenshin ImpactのようにALT押してるときだけ解放でもよかったかもな。まあそれは思想次第だね。