update(){
x++;
Debug.Log(Mathf.Pow(-1,x));
}
フレームが進むごとにxを加算し、-1をx乗したものをログとして出すと、
フレームが進むごとに1と-1を繰り返すログが出ると思うのですが、
この1と-1の間に0を挟む方法を探しています。
ログの結果が、
0
1
0
-1
0
1
のようにしたい場合、簡単に数式で求める方法があるのであれば知りたいところなのですが、効率の面からif文を使った方が良いなどの判断もあるかと思います。皆さんはどのようにしていらっしゃるのでしょうか?
浅学で申し訳ありませんが、ご教授いただけると幸いです。
よろしくお願いいたします。
Unity特有の問題では無い気がするのでお聞きしますが、なぜif文を使ってはいけない(使いたくない?)のでしょうか。
ご質問ありがとうございます!
そうでした!unity特有ではなかったです。
if文を使わないのは大きな理由はないのですが、思い込みのようなものかもしれません。
if文を使わずに求める方法がすでにあるけども自分は知らず、皆さんはこのような場合にはif文を使わない手を使っているのではと思ったことが理由でした。
方法はあっても実はif文を使った方が速いためif文を使うなどの判断もあるかと思いますので、質問を変えさせていただいて、このようなときは皆さんどうしているのかが知りたいという内容にさせていただきます。
メモリアクセスなし(配列)、分岐なしパズル?
(2-(x&3))*(x&1)
掛け算なし?
(0-(x&1) )&(2-(x&3))
C#で、わざわざ式になんてすることなんてほとんどない気がします。昔、アセンブリ言語での高速化の為の準備で考えたことはあります。
繰り返しなら配列を使うことが多いと思います。
>tmpさん
「 (0-(x&1) )&(2-(x&3))」面白い。。。感心してしまいました。案として回答に投稿された方が良いのでは、と思いました。
ご返答が大変遅くなりました。申し訳ありません。ビット演算に触れた事がなかったのですが面白いですね。論理積と合わせてこんな風に使えると知らなかったので大変勉強になりました!回答投稿ではありませんので、こちらで失礼しますが、ありがとうございます!
回答4件
あなたの回答
tips
プレビュー