For a projectile your way makes sense. He was likely talking about an animated melee attack, where his way might make more sense.
Are you calling the factory.create from inside a script attached to the player? Or is the player maybe sending a message to a controller object\script that has the factory component attached? Go.get_position() will get the position of the object that’s calling it. If this script is on some controller/spawner object and not the player itself, the position returned will likely be (0,0,0) plus your offset.
If the script is attached to the player, i feel like this should work as-is, with the info provided. If it is not, then you should use go.get_position(player_url), or if the player is passing a message to the script that creates the factory object, you could take the player’s position (self.position or some other custom property/variable, OR go.get_position()) and pass it as data in the message to the object that is spawning the projectile, and then that object would use message.pos (or however you pass it in the message) instead of go.get