プレーヤーをしゃがませる
![Cee33e0d 0b92 43ba be14 82a7fa2fcd7f](https://codegenius.org/uploads/slide/image/2912/cee33e0d-0b92-43ba-be14-82a7fa2fcd7f.jpeg)
![6b8a67fa fc7d 45a9 b4bb 7750a294bb00](https://codegenius.org/uploads/slide/image/2913/6b8a67fa-fc7d-45a9-b4bb-7750a294bb00.jpeg)
プレーヤーをしゃがませる
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace FPS{
public enum PlayerState{
Idle, Walking, Running, Jumping
}
[RequireComponent(typeof(CharacterController), typeof(AudioSource))]
public class PlayerController : MonoBehaviour {
[Range(0.1f, 2f)]
public float walkSpeed = 1.5f;
[Range(0.1f, 10f)]
public float runSpeed = 3.5f;
private CharacterController charaController;
private GameObject FPSCamera;
private Vector3 moveDir = Vector3.zero;
[Range(0.1f, 10f)]
public float gravity = 9.8f;
[Range(1f, 15f)]
public float jumpPower = 10f;
// ★追加
[Range(0.1f, 2f)]
public float crouchHeight = 1f; // しゃがんだ時の背の高さ
[Range(0.1f, 5f)]
public float normalHeight = 2f; // 通常時の背の高さ
void Start () {
FPSCamera = GameObject.Find("FPSCamera");
charaController = GetComponent<CharacterController> ();
}
void Update () {
Move ();
// ★追加
Crouch();
}
void Move(){
float moveH = Input.GetAxis ("Horizontal");
float moveV = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveH, 0, moveV);
if (movement.sqrMagnitude > 1) {
movement.Normalize ();
}
Vector3 desiredMove = FPSCamera.transform.forward * movement.z + FPSCamera.transform.right * movement.x;
moveDir.x = desiredMove.x * 5f;
moveDir.z = desiredMove.z * 5f;
if (Input.GetKey (KeyCode.LeftShift)) {
charaController.Move (moveDir * Time.fixedDeltaTime * runSpeed);
} else {
charaController.Move (moveDir * Time.fixedDeltaTime * walkSpeed);
}
moveDir.y -= gravity * Time.deltaTime;
if(charaController.isGrounded){
if(Input.GetKeyDown(KeyCode.Space)){
moveDir.y = jumpPower;
}
}
}
// ★追加
// しゃがみ行動
void Crouch(){
if (Input.GetKey (KeyCode.LeftCommand)) {
charaController.height = crouchHeight;
} else {
charaController.height = normalHeight;
}
}
}
}
![Af678638 1589 45d9 bbb8 33e0cdb02b6a](https://codegenius.org/uploads/slide/image/2914/af678638-1589-45d9-bbb8-33e0cdb02b6a.jpeg)
![E5a03dd2 4d08 4019 a6f8 fa79def05ee9](https://codegenius.org/uploads/slide/image/2915/e5a03dd2-4d08-4019-a6f8-fa79def05ee9.jpeg)
![E4f39e89 e596 4dd8 ac6d 421aefa1ef35](https://codegenius.org/uploads/slide/image/2916/e4f39e89-e596-4dd8-ac6d-421aefa1ef35.jpeg)
EscapeCombat
他のコースを見る![Cee33e0d 0b92 43ba be14 82a7fa2fcd7f](https://codegenius.org/uploads/slide/image/2912/cee33e0d-0b92-43ba-be14-82a7fa2fcd7f.jpeg)
![6b8a67fa fc7d 45a9 b4bb 7750a294bb00](https://codegenius.org/uploads/slide/image/2913/6b8a67fa-fc7d-45a9-b4bb-7750a294bb00.jpeg)
プレーヤーをしゃがませる
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace FPS{
public enum PlayerState{
Idle, Walking, Running, Jumping
}
[RequireComponent(typeof(CharacterController), typeof(AudioSource))]
public class PlayerController : MonoBehaviour {
[Range(0.1f, 2f)]
public float walkSpeed = 1.5f;
[Range(0.1f, 10f)]
public float runSpeed = 3.5f;
private CharacterController charaController;
private GameObject FPSCamera;
private Vector3 moveDir = Vector3.zero;
[Range(0.1f, 10f)]
public float gravity = 9.8f;
[Range(1f, 15f)]
public float jumpPower = 10f;
// ★追加
[Range(0.1f, 2f)]
public float crouchHeight = 1f; // しゃがんだ時の背の高さ
[Range(0.1f, 5f)]
public float normalHeight = 2f; // 通常時の背の高さ
void Start () {
FPSCamera = GameObject.Find("FPSCamera");
charaController = GetComponent<CharacterController> ();
}
void Update () {
Move ();
// ★追加
Crouch();
}
void Move(){
float moveH = Input.GetAxis ("Horizontal");
float moveV = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveH, 0, moveV);
if (movement.sqrMagnitude > 1) {
movement.Normalize ();
}
Vector3 desiredMove = FPSCamera.transform.forward * movement.z + FPSCamera.transform.right * movement.x;
moveDir.x = desiredMove.x * 5f;
moveDir.z = desiredMove.z * 5f;
if (Input.GetKey (KeyCode.LeftShift)) {
charaController.Move (moveDir * Time.fixedDeltaTime * runSpeed);
} else {
charaController.Move (moveDir * Time.fixedDeltaTime * walkSpeed);
}
moveDir.y -= gravity * Time.deltaTime;
if(charaController.isGrounded){
if(Input.GetKeyDown(KeyCode.Space)){
moveDir.y = jumpPower;
}
}
}
// ★追加
// しゃがみ行動
void Crouch(){
if (Input.GetKey (KeyCode.LeftCommand)) {
charaController.height = crouchHeight;
} else {
charaController.height = normalHeight;
}
}
}
}
![Af678638 1589 45d9 bbb8 33e0cdb02b6a](https://codegenius.org/uploads/slide/image/2914/af678638-1589-45d9-bbb8-33e0cdb02b6a.jpeg)
![E5a03dd2 4d08 4019 a6f8 fa79def05ee9](https://codegenius.org/uploads/slide/image/2915/e5a03dd2-4d08-4019-a6f8-fa79def05ee9.jpeg)
![E4f39e89 e596 4dd8 ac6d 421aefa1ef35](https://codegenius.org/uploads/slide/image/2916/e4f39e89-e596-4dd8-ac6d-421aefa1ef35.jpeg)
プレーヤーをしゃがませる