まず0を跨ぐ場合と、そうでない場合で2つの判定を作る
//0をまたぐ場合の判定
if ((Target < Min) || (Max < Target)) return true;
        return false;
//通常の判定
if ((Max < Target) && (Target < Min)) return true;
        return false;

これをまとめる
 public bool IsRange(float Target, float Min, float Max)
    {
        if(Max > Min)return IsRange_0Stride(Target, Min, Max);

        if ((Max < Target) && (Target < Min)) return true;
        return false;
    }

public bool IsRange_0Stride(float Target, float Min, float Max)
    {
        if ((Target < Min) || (Max < Target)) return true;
        return false;
    }

更に三次元に対応させてみる
public void RestrictedSpin(Vector3 Angle, Vector3 Vec3Min, Vector3 Vec3Max, Space Type)
    {
        //座標と移動を加算した値
        Vector3 Result = transform.localEulerAngles + Angle;

        if (IsRange(Result.x, Vec3Min.x, Vec3Max.x) == true)
        {
            transform.Rotate(Angle.x, 0, 0, Type);
        }

        if (IsRange(Result.y, Vec3Min.y, Vec3Max.y) == true)
        {
            transform.Rotate(0, Angle.y, 0, Type);
        }

        if (IsRange(Result.z, Vec3Min.z, Vec3Max.z) == true)
        {
            transform.Rotate(0, 0, Angle.z, Type);
        }
    }

コメントをかく


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

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

Menu

メニュー

Grand Theft Auto V 更新停止

Unity5 更新停止

フリーエリア

© 僕の説明書おきばwiki All Rights Reserved.
当サイトの御利用につきまして
いかなるトラブルや
損失・損害等に一切責任を
問わないものとします。

Wiki内検索

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