マルチプレイヤー対応にしました!
角度の同期
今回はカメラのx軸回転を他プレイヤーにも見えるようにしました。元のテンプレートでは自分の動かしているプレイヤーのカメラは動いても、サーバーや他のプレイヤーからはその様子が見えませんでした。
動作を軽くするために、pitchの角度だけ同期するようにしました。後々、aimoffsetをつけて見た目も良くしようと思います。
さらにカメラを動かす処理を「自分のカメラ動作」と「サーバー、他のクライアントにレプリケートするカメラ動作」に分けてみました。自分のカメラをサーバーで動かすとなぜかカクカクになってしまい、気持ち悪かったので……。

他のプレイヤーやサーバーから見ても、自分の動かしているキャラ(左上)が動いているのが分かります。
腕の位置がおかしいのは見なかったことに……
発砲処理
まだ単発でしか撃てませんが、発砲できるようにしました。の前に武器「メイン」、「サブ」、「ナイフ」の3つを切り替えられるようにしました。
発砲処理やあたり判定について、ヴァロラントの公式がその仕組み的なのを書いていてくれたので参考にしてみました。

こういうの読むの楽しい。
処理を軽くするために、treace by channelをつかい、見えない光線(レイ)で銃弾の当たり判定を行うことにしました。実際に銃弾を飛ばして当たったかどうかやってもいいのですが、あんまりメリットを感じなかったので。もしもっとスナイパーとかDMRが活躍するゲームにするなら、変更するかもしれませんが、現状偏差はあまり考えなくてもよさげなのでいいかなと。
実際、最大射程距離100m程のマップで、戦うゲームにするつもりなので。chatGPTによれば、100mでの偏差はARで6cm、スナイパーで7cmらしいです。計算していただきました。

まあ、めんどいから偏差なくていいや。あってもあんま変わんないし。というわけで光線(レイ)によるあたり判定にしました。
ただ弾道のエフェクトは欲しいので、そのうち入れます。エフェクトの代用で今はspawn actorを使っています。
spawn actorはかなりくせ者で、レプリケートすると各クライアントやサーバーで出てくるアクターの名前が違って、あたり判定がうまくいかない事もあります。非常に大嫌いです。大好きです。去年一年理解できなかった……。

次は連射できる様にします。
もし銃の発砲周りで悩んでる方いたらコメントでもtwitterででも書いてください! 分かることなら、具体的に回答します。初心者なので最適解かは分かりませんが。
コメント