Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | stephannGameDev |
Hello folks,
I am a newcomer on Godot Engine (less than a week using Godot) and
and I’m learning how to better organize the project.
My game has a common behavior among objects that is follow another object and I don’t want repeat the same code for each different object. So I created a new scene with a generic Node called FollowBehavior and attached a script. The script look like this:
# FollowBehavior.gd
extends Node
var object
var target
func init(_object, _target):
object = _object
target = _target
func _ready():
pass
func _process(delta):
# MY LOGIC HERE
I added FollowBehavior as a child node in some objects and in their respective scripts I did this:
# Object with follow behavior
func _ready():
$FollowBehavior.init(self, other_object)
Is there a better alternative for this? Is it the “best” way?
I’ve been struggling with the exact same problem. I’ve done it using this node method, but also this way:
extends Node
var a_behaviour
func _init():
a_behaviour = my_behaviour.new()
a_behaviour.init(self)
I found that this way avoids some null object errors that can happen because of the order in which the nodes get created and the engine trying to initialize variables on objects that aren’t created yet.
The downside is that you can’t use the editor modify exported properties of the behaviour.
NaughtyGnosiophile | 2018-07-28 10:22