
Camera Heightで高さを調節する
Edit > ProjectSettings > InputManager > Axes > Size
Sizeを2増やす


こうすると動きます!!
数時間かかった・・
6月1日(日)
Playerが壁に張り付くことがあったため、プログラムを変更
using UnityEngine;
public class Player : MonoBehaviour
{
[Header("移動設定")]
[SerializeField] private float moveSpeed; // 移動速度
[SerializeField] private float jumpForce; // ジャンプ力
[SerializeField] private float deadZone = 0.1f; // コントローラーのデッドゾーン
[Header("カメラ設定")]
[SerializeField] private float mouseSensitivity = 2f; // マウス感度
[SerializeField] private float controllerSensitivity = 100f; // コントローラー感度
[SerializeField] private float maxLookUpAngle = 80f; // 上を向く最大角度
[SerializeField] private float maxLookDownAngle = -80f; // 下を向く最大角度
[SerializeField] private Camera playerCamera; // プレイヤーカメラの参照
[SerializeField] private float cameraHeight = -0.5f; // カメラの高さオフセット
[Header("地面判定設定")]
[SerializeField] private float groundCheckDistance = 0.2f; // 地面チェックの距離
[SerializeField] private LayerMask groundLayerMask = -1; // 地面判定に使用するレイヤー
private Rigidbody rb; // プレイヤーのRigidbody
private bool isGrounded; // 地面に接しているかどうか
private float verticalRotation = 0f; // カメラの縦回転
void Start()
{
rb = GetComponent<Rigidbody>();
// カメラが設定されていない場合、子オブジェクトから探す
if (playerCamera == null)
{
playerCamera = GetComponentInChildren<Camera>();
}
// カメラの位置を調整(視点を下げる)
if (playerCamera != null)
{
Vector3 cameraPos = playerCamera.transform.localPosition;
cameraPos.y = cameraHeight;
playerCamera.transform.localPosition = cameraPos;
}
// カーソルをロック(任意)
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
CheckGrounded();
Move();
Jump();
CameraLook();
}
void CheckGrounded()
{
// プレイヤーの足元から真下にRaycastを飛ばして地面判定
Vector3 rayStart = transform.position;
float rayDistance = groundCheckDistance + 1.0f; // 十分な距離を確保
// 真下向きのRayを飛ばす
isGrounded = Physics.Raycast(rayStart, Vector3.down, rayDistance, groundLayerMask);
// デバッグ用:Rayを可視化(Scene ビューで確認可能)
Debug.DrawRay(rayStart, Vector3.down * rayDistance, isGrounded ? Color.green : Color.red);
}
void Move()
{
Vector3 moveDirection = Vector3.zero;
// キーボード入力
if (Input.GetKey(KeyCode.UpArrow) || Input.GetKey(KeyCode.W))
{
moveDirection += transform.forward;
}
if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.S))
{
moveDirection -= transform.forward;
}
if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.A))
{
moveDirection -= transform.right;
}
if (Input.GetKey(KeyCode.RightArrow) || Input.GetKey(KeyCode.D))
{
moveDirection += transform.right;
}
// コントローラー入力(左スティック)
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
// デッドゾーン処理
if (Mathf.Abs(horizontal) > deadZone)
{
moveDirection += transform.right * horizontal;
}
if (Mathf.Abs(vertical) > deadZone)
{
moveDirection += transform.forward * vertical;
}
Vector3 move = moveDirection.normalized * moveSpeed;
Vector3 velocity = rb.linearVelocity;
rb.linearVelocity = new Vector3(move.x, velocity.y, move.z);
}
void Jump()
{
// キーボード(スペースキー)またはコントローラー(×ボタン)でジャンプ
if ((Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Joystick1Button1)) && isGrounded)
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
void CameraLook()
{
// マウス入力
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
// コントローラー入力(右スティック)
float rightStickX = 0f;
float rightStickY = 0f;
// 複数の軸名を試行(お好みの軸名を追加/変更可能)
string[] rightStickXNames = { "Right Stick X", "Joy1 Axis 4", "RightStickX", "Mouse X" };
string[] rightStickYNames = { "Right Stick Y", "Joy1 Axis 5", "RightStickY", "Mouse Y" };
foreach (string axisName in rightStickXNames)
{
try
{
rightStickX = Input.GetAxis(axisName);
break;
}
catch (System.ArgumentException) { }
}
foreach (string axisName in rightStickYNames)
{
try
{
rightStickY = Input.GetAxis(axisName);
break;
}
catch (System.ArgumentException) { }
}
// デッドゾーン処理とコントローラー入力の適用
if (Mathf.Abs(rightStickX) > deadZone)
{
// 右スティック横軸 → 水平回転(左右)
mouseX += rightStickX * controllerSensitivity * Time.deltaTime;
}
if (Mathf.Abs(rightStickY) > deadZone)
{
// 右スティック縦軸 → 垂直回転(上下)
mouseY += rightStickY * controllerSensitivity * Time.deltaTime; // 反転を削除
}
// 水平回転(プレイヤー全体を回転)
transform.Rotate(Vector3.up * mouseX);
// 垂直回転(カメラのみ回転)
verticalRotation -= mouseY;
verticalRotation = Mathf.Clamp(verticalRotation, maxLookDownAngle, maxLookUpAngle);
if (playerCamera != null)
{
playerCamera.transform.localRotation = Quaternion.Euler(verticalRotation, 0f, 0f);
}
}
public void Ground()
{
isGrounded = true;
}
}
6月4日(水)
壁にカメラがぶつかってもすり抜けないようにする
・・・
二日経っても直せず
6月7日(土)
Unityのセールがやっていたため、アセットをたくさん買いました!!