0 votes

I have a Sword (it is attached to a Player) which moves if I press Space. And I have a Enemy (KinematicBody2D). How can I change the health variable of the Enemy, when the Sword enters the Body of the Enemy? The problem is, that the sword is the same body like the Player so I cant different between them actually. How can I solve this?

in Engine by (334 points)

1 Answer

+1 vote
Best answer

Create an Area2D to animate with/parent to the sword and connect the body_entered signal. The body_entered signal has the parameter body which will reference the intersecting body i.e. the enemy, and the health variable can be accessed directly through that - body.health
Take note if you animate the Area2D make sure to set the AnimationPlayer's playback_process_mode to ANIMATION_PROCESS_PHYSICS.

animation_player.set_animation_process_mode(ANIMATION_PROCESS_PHYSICS)
by (3,219 points)
selected by
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to webmaster@godotengine.org with your username.