- Home /
2D Space Shooter Instantiating bullet question
Hello, I am currently working on a 2D space shooter and I'm using instantiate to get my bullets to shoot out of my ship. It works well, but not as well as I would like it to. At the moment I am using the code
if (Input.GetKeyDown("space")) {
Instantiate(bullet,transform.position,Quaternion.identity);
}
Which like I said works, but it shoots from the middle of the ship which looks ridiculous to me. I would like to set a certain part of the ship for the bullets to fire out of, for example: the barrels I made on the ship. The only problem I have with that is if I do set a certain position of the ship to shoot out from it will only shoot at out of those coordinates instead of the constantly changing gun barrels coordinates. So, how would I get that to work correctly? I'm sure this isn't too difficult.
Also, if I could also get help on how I would get the enemy ships to shoot as well that would be great. I'm guessing I would use a piece of code saying basically after a set amount of seconds it would fire. (Also out of those constantly changing positions).
transform.position+offset
Try making the enemies work first then ask that as a separate question for any specific problems you might have.
Answer by Tabemasu Games · Nov 20, 2014 at 11:09 AM
You can create an empty game object on your ship's cannons. It will move with the ship and will also follow the cannon position/rotation.
Then, reference this game object to your script by creating a public variable and then drag'n'dropping your new game object to this variable.
public Transform cannonOutput;
And finally, use its position when creating your bullet
if (Input.GetKeyDown("space")) {
Instantiate(bullet, cannonOutput.position, Quaternion.identity);
}
Took a little bit to figure out, but it works perfectly. Thanks! :P
Your answer
Follow this Question
Related Questions
iTween NullReferenceException error 1 Answer
how to make multiplication code simpler. 1 Answer
i want to destroy a projectile after it passes a limit on x axis after instantiation(2d game) 1 Answer
Object reference not set to an instance of an object 1 Answer
Changing the sprite of an instantiated object through a collision box from another gameobject. 1 Answer