In this article I will guide you to create characters for shooter game with Godot.
Join the channel Telegram belong to Anonyviet 👉 Link 👈 |
Create character
First of all, download Art.
Link: https://opengamaeart.org/content/animated-top-down-survivor-player
AnimatedSprite
First, delete the Sprite and add yourself to the node node AnimatedSprite.
Then create a new frame
Then add for me
3 Animation is: IDLE – Move – Shoot
Handgun – Rifle – Shotgun you can get in
Pull all 3 of them
Set collisionShape2D again.
Code:
Next is the code. We will check if the player moves, we will run Animation Move and stand still to run Animation Idle, shoot, then run Animation Shoot.
Next because this is a shooter we have to let its character rotate in the direction of the mouse, we have the statement: look_at(get_global_mouse_position())
Next set the camera to look easy:
Add Camera2D node in zoom to adjust it to look easy to see.
Shot
Next we will create bullets to shoot piu piu
Link down: https://drive.google.com/file/d/1fr4xntr-s5qs49g5n98in3otvlvjyxan/View ?USP=sharing
Please download it.
Done then create a new sensing
The original button is Area 2D to check when the bullet collides
Collisionshape2d
Sprite
You pull the image of the bullet into Sprite
Then set Collisionshape2d
Then change the name to Bullet
Create a new script
Here I will add 1 function so that the bullet can spawn in some position you want and damage (damage)
func start_at(pos, dir): position = pos rotation = dir velocity = Vector2(speed, 0).rotated(dir)
Position = POS: Means the position of the bullet will reject the POS
rotation = rotation of bullets
Next, you will create a function to assign the speed of the bullet so that it can fly
func _physics_process(delta): position += velocity * delta
Well, remember to shoot 2 buttons Sprite and Collishape Sang horizontally if you don’t want it to shoot vertical
Then next we must check if the bullet is out of the screen, it cancel itself so that the volume will not be lag.
Then you add buttons VisibilityNotifier2d Then adjust the dog okay. Then connect the signal screen_exit
(escape from the screen)
Then in that sentence we added the command: queue_free()
Then we will shoot it.
Before that, you need to have a bullet sense to be able to add it and use onReady to run, it will be loaded.
Then check if pressing the key F It will shoot
get_parent().add_child(b)
: Meaning it will take parents and add_child means adding a bullet button if there is a video, I will illustrate easier.
b.start_at(global_position,rotation)
: Global_position = the position of the character, rotation is the rotating angle.
When shooting, you will see it appearing in the middle of the player, we need to adjust it out of the gun. So do the following.
You add the Position2D button and then pull it in the place you want the bullet to appear
Next, simply you just need to add $ position2d before the global_position to spawn in the above place
And if you run, you will encounter the case like photos
And the next article will have a fix
Code Player:
extends KinematicBody2D export var speed = 200 onready var bullet = preload("res://Canh/Bulet.tscn") func _physics_process(delta): look_at(get_global_mouse_position()) laydau_nhapvao(delta) func laydau_nhapvao(delta): var vector_dauvao = Vector2.ZERO vector_dauvao.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left") vector_dauvao.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up") vector_dauvao = vector_dauvao.normalized() if vector_dauvao != Vector2.ZERO: $AnimatedSprite.play("move") else: $AnimatedSprite.play("idle") var dichuyen = vector_dauvao * speed * delta if Input.is_key_pressed(KEY_F): shoot() dichuyen = move_and_collide(dichuyen) func shoot(): var b = bullet.instance() get_parent().add_child(b) b.start_at($Position2D.global_position,rotation)