![見出し画像](https://assets.st-note.com/production/uploads/images/74933226/rectangle_large_type_2_c24444898e7c9f221fe0ac25f066fe21.png?width=1200)
ゲーム制作に使えるc言語#6
ゲーム制作で便利なoperatorオーバーロード
皆さんoperatorオーバーロードを知っていますか。
operatorオーバーロードはゲームを作る際にすごく便利な機能です。
自分も制作を始めたらすぐに使います。
今回は、そのoperatorオーバーロードについて話をしていこうと思います。
operatorオーバーロードとは
operatorオーバーロードとは一言でいうと演算子のオーバーロードです。
クラスや構造体どうしで足し算や掛け算ができるようになるというものです。
例えばUnityのVector3やVector2は足し算できますよね。
それにoperatorオーバーロードが使用されています。
では早速実装していきましょう。
Vector3.h
Vector3の例です。
定義はこれだけで大丈夫です。
他にも&&や||も使えます。
今回はfloat型にしたので、%は実装しません。
代入演算子
今回のVector3は、代入演算子を定義しなくても大丈夫ですが、座標以外の変数があった場合その変数も変わらないようにオーバーロードしておきます。
+演算子
-演算子
*演算子
/演算子
加算、減算、乗算、除算ではVector3参照を返してはいけません。
なぜなら、このように中で新しいインスタンスを生成して、そのインスタンスを返すので、参照先がなくなってしまうからです。
+=演算子
-=演算子
*=演算子
/=演算子
加算代入演算子や、減算代入演算子などの代入するものに関しては、自身を返すので、参照にして大丈夫です。
==演算子
!=演算子
<演算子
>演算子
<=演算子
>=演算子
大なり、小なり、以上、以下に関しては、少し変わってくる可能性があるので、どういう実装にする必要があるので、そのゲームによって変えてください。
n++演算子
n- -演算子
++n演算子
- -n演算子
インクリメントやデクリメントも好きなように書き換えることができます。
インクリメントやデクリメントは2種類あるので、前置が、++n演算子と- -n演算子の画像で、後置が、n++演算子とn- -演算子の画像です。
まとめ
このようなクラスを1つ作っておくことで、ゲーム内のオブジェクトの位置や、回転や、大きさなどの計算がすごく簡単になります。
このoperatorオーバーロードを使って、デザインパターンのobserverパターンを実装することも可能です。
ぜひ今後のゲーム制作に使ってみてください。
いいなと思ったら応援しよう!
![mba_internship](https://assets.st-note.com/production/uploads/images/63936299/profile_2b25d36317c49c6f0e84ebc83df0609f.jpg?width=600&crop=1:1,smart)