Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.21 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class PlayerControl_MadeBySome_0721 : MonoBehaviour // コンポーネントに追加できるクラスとして PlayerControl_MadeBySome を設定
  5. {
  6. // このスクリプトで使う変数一覧
  7.  
  8. //private:インスペクタで調整可能な変数
  9. private CharacterController charaCon; // キャラクターコンポーネント用の変数
  10. private Animator animCon; // アニメーションするための変数
  11. private Vector3 moveDirection = Vector3.zero; // 移動する方向とベクトル(動く力、速度)の変数(最初は初期化しておく)
  12.  
  13. //public float:インスペクタで調整可能な変数
  14. public float idoSpeed = 5.0f; // 移動速度
  15. public float rotateSpeed = 3.0F; // 向きを変える速度
  16. public float kaitenSpeed = 1200.0f; // プレイヤーの回転速度
  17. public float gravity = 20.0F; //重力の強さ
  18. public float jumpPower = 6.0F; //ジャンプのスピード
  19.  
  20. //public void:謎の変数
  21. public void Hit() // ヒット時のアニメーションイベント(今のところからっぽ。ないとエラーが出る)
  22. {
  23. }
  24. public void Jump() // ヒット時のアニメーションイベント(今のところからっぽ。ないとエラーが出る)
  25. {
  26. }
  27.  
  28.  
  29. // ■最初に1回だけ実行する処理
  30. void Start()
  31. {
  32. charaCon = GetComponent<CharacterController>(); // キャラクターコントローラーのコンポーネントを参照する
  33. animCon = GetComponent<Animator>(); // アニメーターのコンポーネントを参照する
  34. }
  35.  
  36.  
  37. // ■毎フレーム常に実行する処理
  38. void Update()
  39. {
  40.  
  41. // ▼▼▼カメラの難しい処理▼▼▼
  42. var cameraForward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized; // カメラが追従するための動作
  43. Vector3 direction = cameraForward * Input.GetAxis("Vertical") + Camera.main.transform.right * Input.GetAxis("Horizontal"); // テンキーや3Dスティックの入力(GetAxis)があるとdirectionに値を返す
  44.  
  45.  
  46. // ▼▼▼移動処理▼▼▼
  47. charaCon.Move(moveDirection * Time.deltaTime); //CharacterControllerの付いているこのオブジェクトを移動させる処理
  48.  
  49. if (Input.GetAxis("Vertical") == 0 && Input.GetAxis("Horizontal") == 0) // テンキーや3Dスティックの入力(GetAxis)がゼロの時の動作
  50. {
  51. animCon.SetBool("Run", false); // Runモーションしない
  52. }
  53.  
  54. else // テンキーや3Dスティックの入力(GetAxis)がゼロではない時の動作
  55. {
  56. MukiWoKaeru(direction); // 向きを変える動作の処理を実行する(後述)
  57. animCon.SetBool("Run", true); // Runモーションする
  58. }
  59.  
  60.  
  61. // ▼▼▼落下処理▼▼▼
  62. if (charaCon.isGrounded) //CharacterControllerの付いているこのオブジェクトが接地している場合の処理
  63. {
  64. animCon.SetBool("Jump", Input.GetKeyDown("space") || Input.GetButtonDown("Jump")); // キーorボタンを押したらジャンプアニメを実行
  65. moveDirection.y = 0f; //Y方向への速度をゼロにする
  66. moveDirection = direction * idoSpeed; //移動スピードを向いている方向に与える
  67.  
  68. if (Input.GetKeyDown("space") || Input.GetButtonDown("Jump")) //Spaceキーorジャンプボタンが押されている場合
  69. {
  70. moveDirection.y = jumpPower; //Y方向への速度に「ジャンプパワー」の変数を代入する
  71. }
  72. else //Spaceキーorジャンプボタンが押されていない場合
  73. {
  74. moveDirection.y -= gravity * Time.deltaTime; //マイナスのY方向(下向き)に重力を与える(これを入れるとなぜかジャンプが安定する…)
  75. }
  76.  
  77. }
  78. else //CharacterControllerの付いているこのオブジェクトが接地していない場合の処理
  79. {
  80. moveDirection.y -= gravity * Time.deltaTime; //マイナスのY方向(下向き)に重力を与える
  81. }
  82.  
  83.  
  84. // ▼▼▼アクション処理▼▼▼
  85. animCon.SetBool("Action", Input.GetKeyDown("x") || Input.GetButtonDown("Action1")); // キーorボタンを押したらアクションアニメを実行
  86. animCon.SetBool("Action2", Input.GetKeyDown("z") || Input.GetButtonDown("Action2")); // キーorボタンを押したらアクション2アニメを実行
  87. animCon.SetBool("Action3", Input.GetKeyDown("c") || Input.GetButtonDown("Action3")); // キーorボタンを押したらアクション3アニメを実行
  88. }
  89.  
  90.  
  91. // ■向きを変える動作の処理
  92. void MukiWoKaeru(Vector3 mukitaiHoukou)
  93. {
  94. Quaternion q = Quaternion.LookRotation(mukitaiHoukou); // 向きたい方角をQuaternion型に直す
  95. transform.rotation = Quaternion.RotateTowards(transform.rotation, q, kaitenSpeed * Time.deltaTime); // 向きを q に向けてじわ~っと変化させる.
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement