When we create a new default projection with Unreal Engine, it uses the DefaultPawn which is a kind of gratuitous camera, i we can move in all directions without beingness affected by the gravity. In this fashion, the keyboard'due south keys are used to move the pawn, while the mouse is used to set up its orientation. Usually, it's W to go forward, A to go left and so on. Merely this works only if we take a QWERTY keyboard layout, if we have an AZERTY keyboard (French layout) then the position of the keys used to move isn't natural.

The WASD controls are good for the QWERTY layout, but may be really weird for some other layout.

Then far (at least in UE 4.18), I have not found an easy way to edit the controls of the default pawn easily. It seems that it doesn't rely on the input system, so nosotros tin can't change the binding of the axis. Information technology may be fixed in the future, or maybe I don't take establish the style to do information technology, but anyway if you're interested into define your own pawns, the rest of the article may nonetheless be useful.

Indeed, the easiest way I constitute to define controls of the DefaultPawn is to define our own Pawn based on the input system. We will see how to do it in this short tutorial. Implementing this is pretty easy and straightforward and it'southward a good introduction on how to define custom pawns with custom inputs.

Input configuration.

A proficient starting indicate is to read the Unreal tutorial on the input organization hither.

In our instance, nosotros will but accept to define three axes for the movements (MoveForward, MoveRight and MoveUp) and two axes for the rotation (RotationX, RotationY). When working with a QWERTY keyboard, we would apply Due south-W for the MoveForward axis, A-D for MoveRight, and eventually Z-C for MoveUp. With an AZERTY keyboard, it would be better to apply S-Z/MoveForward, Q-D/MoveRight, W-C/MoveUp. The mouse axes are just jump on the mouse events.

The event is something like this:

Creating the pawn.

At present that we accept clearly divers our inputs, we volition create a new pawn using these inputs and reacting to them. First, allow's add a new Blueprint Course (Add New -> Blueprint Grade) and allow'due south select Pawn for the type of class. This new pawn will be our gratuitous camera, so let's call it FreeCameraPawn.

As far equally I know, whatever pawn accept a camera attached, so we don't demand to attach a camera to the pawn: the position and the rotation of this actor will be the position/rotation of the photographic camera.

At present, we need to demark the inputs to movements. It is done in the Event Graph. We volition detail how to manage the MoveForward axis, and and then, information technology will be the aforementioned for MoveRight and MoveUp. And so let's right-click anywhere in the editor and look for "MoveForward", we should then see this:

Click on the MoveForward nether the category Axis Events to create the event node. We will then connect information technology to the Add Movement Input node. This node is used to create a move vector (but doesn't employ information technology): information technology takes equally parameters the world direction of the movement (here it will be the forward vector of the thespian), and the scale value. And so basically, we tin have this:

And for the other axes, we just have to do the aforementioned but with the correct vector (for MoveRight) and the up vector (for MoveUp).

For RotationX and RotationY inputs, it's slightly different. We will not use Add Motility Input, but Add Controller Yaw Input for RotationX and Add Controller Pitch Input for RotationY.

For rotation, we don't have to do anything else, it should work. But for motion it'south more complicated. We are just creating the motility vectors, only nosotros are not applying them. To practise and so, we have to swallow the move vector in the Event Tick. It can be done like this:

And later on this, our pawn is ready. If we look back at this blueprint code, we can see it's pretty elementary.

Using our newly created pawn.

A small pace remains earlier being able to utilize the new pawn: we need to supervene upon the default pawn by the FreeCameraPawn. Start, we create a new GameMode(Add New -> Blueprint Class -> Game Mode), and in this Game Mode nosotros prepare the Default Pawn Form to FreeCameraPawn.

In one case the Game Mode is created, open it and locate the Default Pawn Class field, replace DefaultPawn with FreeCameraPawn

Then, in World Settings we override the Game Mode by the newly created Game Mode.

Here, Game Mode should exist replaced by your newly created Game Manner

We can now test our program, and it works (nosotros tin can motility the photographic camera freely using the inputs nosotros defined). But it's dull…

To overcome this, there are ii chief solutions:

  • Scaling the value of Axis Value in the events, earlier sending it into the Add Motion Input nodes.
  • Changing the axis scale value in the inputs.

Selecting one instead of the other may depend of the use case. For instance, if we want to dynamically alter this scaling at runtime, we volition take the beginning solution. If not, the second one is sufficient.

Decision.

This small-scale tutorial covers quickly the usage of the input system and the creation of pawns by the example of the Free Camera Pawn. There are a lot of possibilities remaining (nosotros didn't talk nearly actions and we chose to avert talking virtually controllers for the moment), simply it'southward enough to manage any basic camera movement (costless camera, orbit photographic camera, etc.) so that we can implement them in games. As e'er, if you have whatsoever remark, question or proposition, feel free to comment this commodity.