top of page
Search

PROTOTYPE WEEPING ANGEL

  • Writer: Anderson Jerome
    Anderson Jerome
  • Mar 8
  • 3 min read

INTENTION

Setting up the weeping angel in the simplest way possible in UE5.


KEY BEHAVIOURS

Freeze when observed.

Move when unobserved.

One hit kill.


MOVEMENT

I use a SimpleMoveToActor node to make this actor move towards the player.

As usual, NavMesh volume is required for movement.


ANIMATION PLAY RATE

I want the actor to freeze in the middle of their walk cycle, so I set their animation play rate to 0 whenever they stop, and set the animation play rate back to default whenever it is moving.


OBSERVATION

In this prototype, I use a ConvertWorldToScreen to determine if the actor is being oberved by the player.


This come with a problem where they are considered observed despite having an object in between them. To address this, I added a line trace between player and the actor to check if there is a clear line of sight.


If the actor is within the screen, and there is a clear line of sight, then the actor is being observed by the player.


ONE HIT KILL

I set up a collision to check if player is within killing distance. If yes, it will play the killing sequence.


KILLING SEQUENCE

For this prototype, I just needed an action to represent this phase. The action doesn't have any context or meaning behind it. The killing sequence that I set up for this prototype is :

  • The actor play the choking animation montage

  • Update the player's world location and rotation to the actor's choking hand

  • Throw player to the ground. This is where I directly update player's location to one of the dedicated component.


**Up to this point, it works okay for one enemy, but I anticipate to have more than one enemies for a better challenge.

DYNAMIC NAVMESH

With the default NavMesh and SimpleMoveToActor setup, the actors would get stuck frequently.


To address this issue, I change the NavMesh setting so that it will dynamically calculate the NavMesh area. Whenever the actor stops, they will become an obstacle, where the other actor will try to move around them. This approach helps reducing the frequency of actor getting stuck.




LIVELY

It's a common problem to see several actors move together in sync. This if often perceived as fake and break immersion. Nature is usually perceived as random, and chaos. To offset their movement, I randomize their animation play rate each time before they start moving.


As for the choice of animation, I intentionally use a walk cycle that looks a lot more chaotic, with weird angles. This works very well when they run at slightly varying play rate, as well as stopping at different pose. All these contribute into making it feel "lively"


PLAYFULNESS

To tease the player a little, I delayed the stopping. So it kind of give a feeling of "Oops", but still pretend to adhere to the rule despite player caught them not stopping immediately. Like playing red light with kids.


This is how it looks like when they stop immediately.


This is how it looks like when there's a delay before they stop.


Then, I also added a LookAt function, so that even when they stop, they are constantly looking at player. This is kind of like the actor is trying to tell player that they have full control, they can move whenever they want, but decided to play this little game with them.


PARANOIA

To amplify this paranoia feel, I added footsteps sound so that player clearly know they are moving, but can't really point where exactly they are. This is like you chasing a kid that is running away, and as you stomp your feet, they run even faster even though you are stomping feet in place.


So that's how I set up the weeping angel in the simplest way possible in UE5.



 
 
 

Comments


bottom of page