0

C#で一種のクランプを行う必要があります。数値が最大値に達するとゼロに戻り、最小値に達すると最大値に戻ります。テクスチャを並べて表示したいので、これを行う必要があります。

4

5 に答える 5

7

必要なのは Modulus 演算子です (必要に応じて負の数を処理するようにわずかに調整されています)。

public static int Modulas(int input, int divisor)
{
    return (input % divisor + divisor) % divisor;
}
于 2013-01-15T18:43:30.227 に答える
3

モジュロはあなたの友達です:

myVal = (myVal++) % (maxValue+1);

たとえば、最大値が 4 の場合:

0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
....
于 2013-01-15T18:45:41.227 に答える
2

具体的にどこに問題がありましたか?

それはかなり簡単なようです:

int number = 4; int maxNum = 20; int minNum = 5;
number = number > maxNum ? 0 : number < minNum ? maxNum : number;
// 20

デモ

于 2013-01-15T18:42:32.460 に答える
1

わかりました、解決策を見つけました

private float Wrap(float val, float min, float max)
    {
        val = val - (float)Math.Round((val - min) / (max - min)) * (max - min);
        if (val < 0)
            val = val + max - min;
        return val;
    }
于 2013-01-15T19:58:54.733 に答える
0
private const Int32 c_ClampMaximum = X;

private Int32 m_Clamp;

public Int32 Clamp
{
    get { return m_Clamp; }
    set
    {
        if (value >= c_ClampMaximum)
        {
            m_Clamp = 0;

            while (value > c_ClampMaximum)
               value -= c_ClampMaximum;
        }

        m_Clamp = value;
    }
}
于 2013-01-15T18:44:01.833 に答える