こちらはオブジェクトに対する操作(回転情報)を決定するクラスです。
CubeControllerという名称にはなっていますが、他のオブジェクトにアタッチすればそちらでも利用できます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// オブジェクトの操作を行うクラス
/// 現在はCubeにアタッチするようにしている
/// </summary>
public class CubeController : MonoBehaviour
{
private Test test; // クラス取得用
[Header("回転角度の設定値")]
public float eulerAngle;
private int axis; // 回転させる軸の設定値
void Start()
{
// Testクラスを取得しtest変数に代入 = アクセスできる状態にする
// 取得するTestクラスが同じオブジェクトにアタッチされている場合
// 省略しない書き方
test = this.gameObject.GetComponent<RotateTest>();
// 省略した書き方(基本形)
//test = GetComponent<RotateTest>();
}
void Update()
{
// ボタンを押す度に回転軸を x => y => z => x と変更する
if (Input.GetKeyDown(KeyCode.Z)) {
axis++;
// zになったらxに戻す
if(axis >= 3) {
axis = 0;
}
Debug.Log(axis);
}
if (Input.GetKeyDown(KeyCode.X)) {
// cubeを回転させるため、TestクラスのRotateCubeメソッドを呼び出す
// 第1引数として回転する角度、第2引数として回転をさせる軸の情報を渡す
// アクセスする場合には、[クラスの代入されている変数名].[呼び出すメソッド名]で書く
test.RotateCube(eulerAngle, axis);
}
if (Input.GetKeyDown(KeyCode.C)) {
// cubeを回転させるため、TestクラスのRotateCubeメソッドを呼び出す
// 第1引数として回転する角度、第2引数として回転をさせる軸、第3引数として逆回転の情報を渡す
test.RotateCube(eulerAngle,axis,true);
}
if (Input.GetKeyDown(KeyCode.Space)) {
// cubeの状態をリセットするため、TestクラスのResetRotateを呼び出す
test.ResetRotate();
}
if (Input.GetKeyDown(KeyCode.V)) {
// 各回転軸の回転させた回数をリセットするため、TestクラスのResetAxisCountを呼び出す
test.ResetAxisCount(0);
}
}
}
完成したらCubeオブジェクトにアタッチします。
キー入力をしたときにCubeオブジェクトが回転するか、確認をしてみましょう。
それぞれ別のクラスに書かれている処理が一連の流れで繋がっていれば回転動作をするはずです。