見出し画像

ゲーム制作に使えるc言語#6

ゲーム制作で便利なoperatorオーバーロード


皆さんoperatorオーバーロードを知っていますか。

operatorオーバーロードはゲームを作る際にすごく便利な機能です。
自分も制作を始めたらすぐに使います。
今回は、そのoperatorオーバーロードについて話をしていこうと思います。

operatorオーバーロードとは

operatorオーバーロードとは一言でいうと演算子のオーバーロードです。
クラスや構造体どうしで足し算や掛け算ができるようになるというものです。

例えばUnityのVector3やVector2は足し算できますよね。

それにoperatorオーバーロードが使用されています。

では早速実装していきましょう。

Vector3.h

画像1


Vector3の例です。
定義はこれだけで大丈夫です。
他にも&&や||も使えます。
今回はfloat型にしたので、%は実装しません。

代入演算子

画像2


今回のVector3は、代入演算子を定義しなくても大丈夫ですが、座標以外の変数があった場合その変数も変わらないようにオーバーロードしておきます。

+演算子

画像3


-演算子

画像4


*演算子

画像5


/演算子

画像6


加算、減算、乗算、除算ではVector3参照を返してはいけません。
なぜなら、このように中で新しいインスタンスを生成して、そのインスタンスを返すので、参照先がなくなってしまうからです。

+=演算子

画像7


-=演算子

画像8


*=演算子

画像9


/=演算子

画像10


加算代入演算子や、減算代入演算子などの代入するものに関しては、自身を返すので、参照にして大丈夫です。

==演算子

画像11


!=演算子

画像12


<演算子

画像13


>演算子

画像14


<=演算子

画像15


>=演算子

画像16


大なり、小なり、以上、以下に関しては、少し変わってくる可能性があるので、どういう実装にする必要があるので、そのゲームによって変えてください。

n++演算子

画像17


n- -演算子

画像18


++n演算子

画像19


- -n演算子

画像20


インクリメントやデクリメントも好きなように書き換えることができます。
インクリメントやデクリメントは2種類あるので、前置が、++n演算子と- -n演算子の画像で、後置が、n++演算子とn- -演算子の画像です。

まとめ

このようなクラスを1つ作っておくことで、ゲーム内のオブジェクトの位置や、回転や、大きさなどの計算がすごく簡単になります。
このoperatorオーバーロードを使って、デザインパターンのobserverパターンを実装することも可能です。
ぜひ今後のゲーム制作に使ってみてください。

いいなと思ったら応援しよう!

mba_internship
よろしければ応援お願いします! いただいたチップは活動費に使わせていただきます!