空間ベクトルの話です。図でベクトルrを、ベクトルnを回転の軸としてθだけ回します。例えばθ=60°なら、ベクトルrはベクトルsのところまで回ります。ベクトルnの終点から始点を眺め、反時計回りに角度を測ります。
ベクトルrからベクトルsを求めるための公式があります。ロドリゲスの回転公式と言います。次のようなもの。
θを60°ずつ増やせば空間内に6本のベクトルが得られます。この方向に弾を発射するとか、いろいろ使えるでしょう。6本ではないですが、4方向に撃ったのが下の写真です。
空間内の回転なので、前に書いたクオータニオンでも実現できますが、ここではベクトル解析の知識、ロドリゲスの回転公式を使いました。
Unityは左手系の空間座標を使います。通常、数学では右手系です。z軸の向きが反対です。外積は右手系では右ネジの進む向きに定義しますが、左手系では右ネジが進む向きの反対向きです。あまり考えずに、ちゃんと答えは合うようにしていますが、左手系ではベクトルnの終点から始点を眺め、時計回りにθだけ回す公式だと考えればよいようです。
慣れていないといろいろ分からないことも出てきますが、調べてがっちりサブルーチンを作っておけば心配なし。面倒でも使い方をきちんとコメントにしておきます。これを繰り返せば大きなプログラムを書けます。使えるカードを増やしておくことです。
2021年2月28日(日) 7:52 追記:
最初の公式で、右手系と左手系で外積の部分の符号が変わります。式を見ると、θの代わりに-θを使えばその変化をキャンセルできる……と考えられます。