In this article, I will guide you to create enemies for our characters with Godot game programmer. Enemies will cause the character to lose blood or you have to fight the enemy. And this part has some parts that can be very difficult and unsuccessful, so be prepared.
Join the channel Telegram belong to AnonyViet 👉 Link 👈 |
And let’s get started.
Creating Enemies in Godot
First we will create a button KinematicBody2D change name to enemy. LIVE enemy > more AnimatedSprite because it is of form 1 and Collision gives it as normal.
If you are using anonyviet’s assets, there are enemy assets at: asset-player > NPC > enemy assets
You can choose any one.
Create SpriteFrame new
Create Animation is move
Here is the blurry picture, please re-import it
I have re-imported it and it looks better
Next set collision for it, here I set below not set above so that the upper part can let the character jump up and destroy it.
Lock it and create a new script and this script will be named enemy
We will create the following variables
const vitri = 1 const chuyendong = vector2 const tocdo = tùy bạn const trongluc = tùy bạn const FLOOR = Vector2(0,-1)
here const is the statement used to lock the number, that is, when you declare a variable with const, it will lock that number and never be able to edit its value.
Physical motion code
Next we will create a physical motion function
And will code like this
Assign change the x-axis = with tocdo * with vitri (* leave positive speed on the right and negative speed on the left)
Call the animation just created above: $AnimatedSprite.play(“tênanmation’)
Assign chuyendong trục y += trongluc
And call the move_and_slide command so that the enemy can move.
And here we will need a function for the enemy to detect the wall and it will move in reverse.
For example: The enemy moves to the wall, then detects that wall and then it will move back. It’s like when you reach the wall, you will simply turn around.
And we will use the if statement to check the wall: if is_on_wall():
inside if wall would be: vitri = vitri * -1
Above you have seen tocdo * vitri
then positive speed is on the right and negative speed will be on the left when vitri * with -1 then it will reverse and the enemy will move in reverse when hitting the wall and right again vice versa.
And it was successful, but you notice that our enemy doesn’t change direction but stays in one direction and now we will correct it.
You code like this
if vitri == 1:
(vitri = 1 = positive number where positive = move to the right)
$AnimatedSprite.flip_h = false
(flip_h is the command used to rotate the sprite to the right or left)
else:
(opposite of above)
$AnimatedSprite.flip_h = true
(flip_h = false is it won’t rotate will stay the same,true = vice versa)
And it moved backwards
Ok so that’s the end of part 1, creating enemies for the character. Part 2 will help you code the enemy to move back and forth on the map as shown below
When you make those blocks the enemies won’t move back and forth and that’s why there will be Part 2
And Part 3 will help you create, hp, damage for the enemy ^^.