主なコンテンツ

〜主なコンテンツ〜

1. Unityで製作したゲームと製作Tips
  1. 三月精チャレンジ(東方Project二次創作)
    1. 作り方
  2. 英語学習2D(オリジナルスマホアプリ)
2. UE4
3. ゲームアプリ見学
4. Bitbucket & SourceTreeでの一連の流れ
  1. 前半
  2. 後半
5. Tips
  1. UnityのTips
  5. SQL文のTips
  6. Final IK
  7. GearVR+Unity

2023年1月18日水曜日

38. Camera and Spring Arm

 おかえり。


これで、キャラクター クラスとキャラクター ブループリントができました。


カメラ コンポーネントやスプリング アーム コンポーネントなどのコンポーネントの追加を開始します。


それでは飛び込みましょう。


ロビー マップに移動して、BP_Blaster_character をドラッグします。


まず、ゲームモードを設定していないため、自動的にキャラクターを所有することはありません。


しかし、キャラクターを選択し、自動所有プレイヤーの詳細パネル検索に移動し、それを player_0 に設定した場合、プレイを押すと、このキャラクターが自動的に所有されます。


しかし、カメラはほとんどキャラクターの内部にあることがわかります。


そのため、キャラクターを所有しているときにビューを制御するには、カメラとスプリング アームが必要です。


したがって、これらのコンポーネントを C++ から追加します。


これが blasterCharacter.h と BlasterCharacter.cpp です。


いくつかの新しい変数を宣言します。


public セクションにコンストラクターがあります。 ここには、Tick と SetupPlayerInputComponent を含む 2 つ目のパブリック セクションがあります。


これらの公開機能をここの一番上にあるこの公開セクションに移動したいと思います。


また、この時点で、これらの関数が何をするかをすべて知っているはずなので、これらのコメントが必要だとは本当に思いません。 なので、それらのコメントは削除します。

ここでは、Tick と SetupPlayerInputComponent を [トップ パブリック セクション] に移動します。 および保護されたセクションの下。


プライベートセクションを希望します。


そこで一つ追加します。


この公開セクションはここに置いておきます。 この領域は、さまざまなメンバー変数の単純な getter と setter 用に予約します。


ここのプライベート セクションでは、ここにスプリング アームとカメラを追加します。

そこで、use spring arm コンポーネントを前方宣言します。


これを CameraBoom と呼ぶことにします。


さて、これには新しいプロパティ マクロが必要になります。


だから私はこれをどこでも見えるようにするつもりです。


そして、CameraBoom とカメラを 1 つのカテゴリに入れたいと思います。


これを CategoryCamera と呼びます。


そしてもちろん、実際のカメラ自体も必要です。これも前方宣言されます。


そして、これは UCameraComponent になります。


これを FollowCamera と呼ぶことができます。


さて、これもVisibleAnywhere、そしてCategoryCameraにします。 これで、変数を宣言しました。


しかし、これらを構築する必要があります。 これを行い、Blaster キャラクター コンストラクターを作成します。


現時点ではこれらのコメントは必要ないと思うので、ここでこれらのコメントを削除します。 彼らは初心者をスピードアップさせるためのものです. したがって、ここでコンストラクターでそれらを削除できると思います。


CameraBoom を作成しましょう。 だから私はカメラブームと言ってデフォルトのサブオブジェクトを作成します。


これは USpringArmComponent です。


テキスト マクロでは、これを CameraBoom と呼びます。


もちろん、ここではスプリング アーム コンポーネントを使用しているため、そのタイプのヘッダーを含める必要があります。 「GameFramework/SpringArmComponent.h」をインクルードします。


これで、アンリアル エンジンのドキュメントでいつでもクラスを検索して、このインクルードを確認できます。


通常、CameraBoom をルート コンポーネントに接続しますが、カメラ ブームをメッシュ コンポーネントに接続したいと思います。


これは、後でカプセル サイズを変更するしゃがみ機能を使用するためです。


カプセルは私たちのルートであり、スプリング アームがカプセルに取り付けられた状態でカプセル サイズを変更すると、スプリング アームが動きます。


ということで、代わりにスプリングアームをメッシュに取り付けます。

セットアップ アタッチメントを呼び出して、get mesh でアクセスできるメッシュを使用します。


次に、カメラ ブームのターゲット アームの長さを設定します。 それでは、cameraBoom->TargetArmLength としましょう。 これを 600 に設定します。


しかし、それを調整したいかどうか見ていきます。


現在、カメラ ブームにも bUsePownControlRotation があります。 これを true に設定して、マウス入力を追加するときにコントローラーと共にカメラ ブームを回転できるようにします。


これで cameraBoom ができました。 カメラを作成しましょう。 そのため、フォローカメラがあります。


createDefaultSubObject を使用します。 これは UCameraComponent です。 これを followCamera と呼びます。


setupAttachment を使用して、followCamera をカメラ ブームに取り付けることができるようになりました。


そして、use springArmComponent、静的メンバー変数ソケット名を使用して、カメラを cameraBoom の socketName ソケットに接続できます。


そして、カメラ コンポーネントを使用しています。 そのため、ヘッダーを INCLUDE する必要があります。 これは camera/cameraComponent.h にあります。


現在、フォロー カメラは cameraBoom にアタッチされているため、PownControlRotation を使用する必要はありません。 したがって、followCamera->beUseControlRotation = false と言えます。


それでは、先に進んでコンパイルしましょう。


カメラがあり、もちろん、カメラ ブームがメッシュに取り付けられていることがわかります。


下部にピボットポイントがあります。 ここでは、スプリング アームが下部に取り付けられていることがわかります。


さて、ここの BLUEPRINT を見ると、約 600 単位離れているように見えます。 私たちのターゲット アームはこの 600 のようなものだからです。

しかし、ここではそれがわかりません。 カメラが床に衝突する可能性が最も高いためです。


では、カメラ ブームを上に動かしてみましょう。実際には地面から取り付けたくないからです。


カメラ ブームを取り、Z 方向の位置を 88 に設定します。そうすれば、ここの中央に取り付けられます。 カメラ ブームを少し上に移動することもできます。 それはあなた次第です。


コンパイルして再生ボタンを押すと、キャラクターから正しい距離にいることがわかります。


もちろん、まだ動き回ることはできません。


これは、その機能をプログラムしていないためです。


それが次のステップになります。


この講義では、カメラ コンポーネントとスプリング アームを追加し、それらのアタッチメントをセットアップして、カプセルであるルート コンポーネントではなく、メッシュにスプリング アームを取り付けました。


そうすれば、後でしゃがんでカプセルのサイズを変更しても、スプリング アームの高さには影響しません。


これで、移動機能をプログラムする準備が整いました。次にそれを行います。


また後で。


Welcome back.


Now we have a character class and a character blueprint.


It's time to start adding components, including a camera component and a spring arm component.


So let's jump in.


So if we went to our lobby map and drag and the BP_Blaster_character.


First of all, we don't have a game mode set up, so we won't automatically possess the character.


But if we had the character selected and went to the details panel search for auto possessed player and set that to player_0, then we'll automatically possess this character when we hit play.


But we'll see that the camera is Pretty much inside the character.


So we need a camera and a spring arm to control the view when we're possessing the character.


So we'll add these components from C++.


Now here's our blasterCharacter.h and BlasterCharacter.cpp.


We're going to declare a couple of new variables.


we have our constructor up here in our public section. and we have a second public section with Tick and SetupPlayerInputComponent down here.


I'd like to move these public functions up here to this public section at the top.


And I also don't really think we need these comments as by this point, we should all know what these functions do. So I'm going to remove those comments.

I'm going to take Tick and SetupPlayerInputComponent and simply move these up to [the top public section] here. and below the protected section.

I'd like a private section.

So I'll add one there.

I am going to keep this public section, down here. and I'm going to reserve this area for our simple getters and setters for our various member variables.

Now, in the private section here, this is where I'd like to add our spring arm and camera.

So I'm going to forward declare the use spring arm component.

And I'm going to call this CameraBoom.

Now, this is going to need a new property macro.

So I'm going to give this visible anywhere.

And I'd like to stick the CameraBoom, and the camera into a category.

We'll call this CategoryCamera.

And of course, we need the actual camera itself, which will also be forward declared.

And this will be a UCameraComponent.

And we can call this FollowCamera.

Now, I'm going to make this also VisibleAnywhere, And in the CategoryCamera. So we've declared our variables.

But we do need to construct these. And we'll do that, and Blaster characters constructor.

I'm going to also go ahead and remove these comments here as I don't feel like we need these at this point. They're more for getting beginners up to speed. So I believe we can remove them now here in the constructor.

let's construct our CameraBoom. So I'm going to say camera boom and use create default sub object.

This is a USpringArmComponent.

And in the text macro, I'm going to call this CameraBoom.

Now of course, we're using you spring arm component, so we'll need to include the header for that type. So I'm going to include "GameFramework/SpringArmComponent.h".

Now you can always look up a class in unreal engine documentation to see the include for this.

Now ordinarily we would attach the CameraBoom, usually to the root component, but I'd like to attach the camera boom to our mesh component.

That's because later on we'll be using the crouch function, which changes our capsule size.

The capsule is our route, and if we change the capsule size while the spring arm is attached to the capsule, the spring arm will move.

So I'm going to attach the spring arm to the mesh instead.

So I'm going to call setup attachment and use the mesh which we can access with get mesh.

Now I'd like to set the camera booms target arm length. So let's say cameraBoom->TargetArmLength. And I'm going to set this to 600.

But we'll see if we'd like to adjust that.

Now, the camera boom also has bUsePownControlRotation. I'm going to set this to true so that we can rotate the camera boom along with our controller when we're adding mouse input.

So we have the cameraBoom. Let's create our camera. So we have follow camera. 

We'll use createDefaultSubObject. and this is a UCameraComponent. And I'll call this followCamera.

Now followCamera can be attached to the camera boom using setupAttachment.

And we can use the use springArmComponent, static member variable socket name to attach the camera to the cameraBoom's socketName socket.

And we're using the camera component. So we'll need to INCLUDE the header for that. that's going to be in camera/cameraComponent.h.

Now the follow camera does not need to use the PownControlRotation as it's attached to the cameraBoom. So we can say followCamera->beUseControlRotation = false.

So let's go ahead and compile.

And we now see that we have a camera and of course, our camera boom is attached to our mesh.

Which has its pivot point at the bottom. So we see that our spring arm is attached to the bottom here.

Now, I see that here in the BLUEPRINT it looks about 600 units away. because our target arm like this 600.

But we don't see that here. because the camera is most likely colliding with the floor.

So let's take our camera boom and move it on up, since we don't really want it attached from the ground.

So I'm going to take the camera boom and set its location in the Z to 88. That way, it's attached at the middle here. You may even want to move the camera boom up a bit. That's up to you.

So I'm going to compile and press play, and now I see that I'm the correct distance away from the character.

Now, of course, we can't move around yet.

That's because we haven't programmed that functionality.

That'll be our next step.

So in this lecture, we added a camera component as well as a spring arm, and we set up the attachment for those and we attached our spring arm to the mesh rather than to the root component, which is the capsule.

That way later, when we crouch and change the capsule size, this won't affect our spring arm elevation.

We're now ready to program movement functionality and we'll do that next.

I'll see you soon.

0 件のコメント:

コメントを投稿