Unityに関連する記事です

ここではオブジェクトの回転についてテストを行います。
こちらのクラスと次のCubeControllerクラスの両方を扱って一連の動作を行うように設計されています。
まずはこちらのクラスを作成してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// オブジェクトの回転テスト用クラス
/// </summary>
public class RotateTest : MonoBehaviour
{
    [Header("回転させる軸と回転させる回数")]
    public int x;
    public int y;
    public int z;

    /// <summary>
    /// Cubeを回転させる処理
    /// </summary>
    /// <param name="argumentEulerAngle">回転させる角度</param> 
    /// <param name="argumentAxis">回転させる軸</param>  
    /// <param name="isReverseFlag">正回転か逆回転かどうかのフラグ 基本はfalseで正回転</param> 
    public void RotateCube(float argumentEulerAngle, int argumentAxis, bool isReverseFlag = false) {
        // 回転させたい軸の情報をrotationPosに代入
        Quaternion rotationPos = transform.rotation;
        Debug.Log(transform.rotation);

        // 逆回転させるフラグがON(true)なら、回転させる向きを逆にする
        if (isReverseFlag) {
            argumentEulerAngle = -argumentEulerAngle;
            Debug.Log("Reverse");
        }
        // 回転させる軸を決める分岐 いずれかのcaseに入る
        // 軸ごとに回転した回数がカウントされる
        switch (argumentAxis) {
            case 0:  // x軸
                x++;
                rotationPos.x = argumentEulerAngle * x;
                break;
            case 1:  // y軸
                y++;
                rotationPos.y = argumentEulerAngle * y;
                break;
            case 2:  // z軸
                z++;
                rotationPos.z = argumentEulerAngle * z;
                break;
        }
        // 上記の分岐で決定した角度で回転させる
        // 分岐以外の2つの軸は元々の数値がそのまま再度入る
        transform.rotation = Quaternion.Euler(rotationPos.x, rotationPos.y, rotationPos.z);
        Debug.Log(transform.rotation);
    }

    /// <summary>
    /// Cubeの回転を初期状態に戻す処理
    /// </summary>
    public void ResetRotate() {
        // identityはゲーム開始時(生成時)の回転軸の情報の状態
        transform.rotation = Quaternion.identity;
        //transform.rotation = Quaternion.Euler(0,0,0);        
    }

    /// <summary>
    /// Cubeの各回転軸の回転回数を0に戻す処理
    /// </summary>
    /// <param name="argumentCount"></param>
    public void ResetAxisCount(int argumentCount) {
        x = argumentCount;
        y = argumentCount;
        z = argumentCount;
    }   
}

こちらのクラスをCubeオブジェクトにアタッチします。
このクラスには他のクラスのような、キー入力のメソッドはありません。
キー入力を別のクラス(CubeController)で管理し、こちらでは回転させる処理のみを行うようにしているためです。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます