Help us understand the problem. What is going on with this article?

[UE4]FirstPersonShooterゲームを作るときのtips集

よし、FPS作るぞ!

・この記事ではUnreal Engine4を使ってFPS(FirstPersonShooter)を作るときに参考になるかもしれないtips集をお届けしたいと思います。

この記事はUnreal Engine 4 Advent Calender 2019その2の20日目の記事です。
https://qiita.com/advent-calendar/2019/ue4_deux

NearClipPlane

・FPSを作ったことがある方、または作ろうとした方が一度は目にするこの現象
NCP_10.png
カメラから近い場所をクリップしてしまう現象です。実はこれProject Settingsから緩和することが可能です。

NCP_Settings.png

試しにNear Clip Plane5にしてみましょう。(初期値は10)

NCP_5.png
クリッピングされなくなりました!素晴らしい!

WeaponCollision vs Wall

MeshIntoWall.png
FPSゲーでよく見るこの現象、なるだけで僕はがっかりしてしまいます。いくつかの直し方があるので直してみましょう。

CapsuleCollisionのRadiusを大きくする
CapsuleCollision.png
デフォルトが34ですが、それを80くらいにしてみました。

CapsuleCollision_80.png
埋まらなくなりました!ですが、この方法は継承されているCapsule Collisionの大きさを変えているので場合によっては破綻する恐れがあります。(Capsule Collisioinで敵からの当たり判定などをとっている時などはまた別のCapsule Collisionを用意し当たり判定を取った方がいいです)

腕メッシュを前後に移動

Component.png

これはCameraの下に腕のメッシュがある場合の解法になります。

Tick01.png
銃メッシュのBarrel Socket(銃の先端)から画面の真ん中までLine Traceを飛ばし、ヒットしたらBarrelSocket-ImpactPointしたのをLength(長さ)にします。そのLengthを元にMap Range Clampedをし腕メッシュの位置を前後に移動させ埋まらなくさせています。こんな感じになります。

IKやらなんやらでごちゃごちゃやる方法もありますが、それだけで一本記事が書けちゃうくらい長いのでそれは後ほど

ADS

ADS(AimDownSight)です。tipsというよりかは実装例になります
Component.png
武器のクラスにCameraを追加します。関数を作成します。
ADSFunc.png
基本的にはSet View Target With Blend関数でどうにでもなります。New View TargetのActorが新しいCameraになります。CameraをComponentに含むクラスであれば問題なくCameraの遷移が行われます。この関数をプレイヤーのクラスで呼び出すことでADSが可能になります。

銃の発射処理

・セミオート
Semiauto.png
単純に銃クラスのFire関数を実行するだけ

・フルオート
Fullauto.png
銃クラスのFireをSet Timer by Function Nameで実行するだけ

・3点バースト
3-Bursh.png
Fire関数を実行し、delayを挟むだけ

以上!

気が向いたらまだまだ追加するかも。現在進行形でFPSを製作中ですので何か面白いネタがあったら追加で書きます

明日はregonnさんの[Pythonと機械学習をUE4で使ってみる]です。楽しみですね!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした