- Unreal Development Kit Game Programming with UnrealScript:Beginner's Guide
- Rachel Cordone
- 772字
- 2021-08-27 11:59:06
Time for action – Using vectors
Since we already know that an actor's Location is a vector, let's play around with our AwesomeActor's location.
- First we'll declare a vector of our own at the top of our class.
var vector LocationOffset;
- Vectors have their X, Y, and Z values set to 0.0 by default. We'll give ours a new value and add that to our actor's current location in our
PostBeginPlay
function.function PostBeginPlay() { LocationOffset.Z = 64.0; SetLocation(Location + LocationOffset); }
When used as a location, the Z float inside a vector represents the up and down axis. Making the values of Z greater means moving it up, lower or more negative means moving it down. In our example we're going to move the actor up 64 units. We use the function in the second line,
SetLocation
, to tell the game to move ourAwesomeActor
. Since we already know its current location with the Location variable, we just add ourLocationOffset
to move it up 64 units. - There's one thing we need to do before we test this out. When we first created our
AwesomeActor
, we made it invisible in game. Let's change that so we can see what happens. In the default properties of our actor, delete this line:HiddenGame=False
Now our
AwesomeActor
should look like this:class AwesomeActor extends Actor placeable; var vector LocationOffset; function PostBeginPlay() { LocationOffset.Z = 64.0; SetLocation(Location + LocationOffset); } defaultproperties { Begin Object Class=SpriteComponent Name=Sprite Sprite=Texture2D'EditorResources.S_NavP' End Object Components.Add(Sprite) }
- Let's compile and test! In the editor, we can see our
AwesomeActor
still halfway stuck in the floor: - Run the game from the editor, and we can see that our code has worked! The
AwesomeActor
has moved up: - That seems like a bit too much code just to add two vectors together. Luckily, there's a much simpler way to use vectors to do what we want here. Vectors can be created and assigned a value at the same time that we're using it in code, like this:
vect(X value, Y value, Z value)
So if we just wanted to move our actor up 64 units, we could do it all on one line.
- Let's get rid of our
LocationOffset
variable line and change ourPostBeginPlay
to look like this:function PostBeginPlay() { SetLocation(Location + vect(0,0,64)); }
- Compile and test, and we get the same result!
Another useful function we can use with vectors is called VSize. If you remember your old geometry lessons, Pythagoras' Theorem lets us find the hypotenuse of a triangle by using the two sides. We can use a 3D version of the same equation to find the length of our vector.
With that diagram, the length of Vector would be expressed as this:
Length = √(X2 + Y2 + Z2)
With VSize, all of that is done for us:
Length = VSize(Vector)
So with that in mind, let's find out how far our
AwesomeActor
is from the world origin (0,0,0). - Let's change our
PostBeginPlay
function to this:function PostBeginPlay() { 'log("Distance:" @ VSize(Location)); }
- Compile and test, and the answer shows up in the log!
[0007.88] ScriptLog: Distance: 2085.2571
If we wanted to find out the distance between two actors, we would use their locations like this:
Distance = VSize(A.Location – B.Location);
The order doesn't matter inside the VSize, we could also find the distance like this:
Distance = VSize(B.Location – A.Location);
What just happened?
Vectors are the struct we'll be using the most in UnrealScript, especially since they're used to hold an actor's Location. As we can see from the VSize
and vect
examples, vectors go beyond being just a struct and have their own functions dedicated exclusively to them.
One other variable to discuss also has functions dedicated to it.
Rotators
In the same way vectors are defined as a struct, rotators are as well.
struct immutable Rotator { var() int Pitch, Yaw, Roll; };
Rotators define a rotation in 3D space. To visualize it it helps to think of an airplane flying in the sky.

Pitch would be the airplane tilting forwards and backwards to climb or descend. Roll would be the plane tilting sideways, and Yaw would be the plane rotating horizontally, like a spinning frisbee.
In addition to a Location vector, every actor in the game has a rotator variable called Rotation that tells the game what direction it's facing. Rotating a wall in the editor changes that static mesh's rotation value. The player's view rotation is held in a rotator. They're not used as often as vectors, but they're obviously still important. Let's take a look at them.
- Windows phone 7.5 application development with F#
- FPGA從入門到精通(實戰篇)
- 新型電腦主板關鍵電路維修圖冊
- 電腦維護與故障排除傻瓜書(Windows 10適用)
- Applied Unsupervised Learning with R
- 計算機組裝與系統配置
- Deep Learning with PyTorch
- scikit-learn:Machine Learning Simplified
- Svelte 3 Up and Running
- Building 3D Models with modo 701
- Managing Data and Media in Microsoft Silverlight 4:A mashup of chapters from Packt's bestselling Silverlight books
- 單片機技術及應用
- 圖解計算機組裝與維護
- Intel FPGA權威設計指南:基于Quartus Prime Pro 19集成開發環境
- 觸摸屏應用技術從入門到精通