- Home /
How to make bullet move in the players forward direction at the same speed as the player that fired it, as well as in the bullets forward direction.
In this case the player is a ship. So lets say the ship is moving left If I were to fire right cannons how would I make them leave the ship in their fired direction but also keep moving at the same speed/direction that the ship was when I fired them.
An example of what I mean is seen here; https://i.stack.imgur.com/Zw9jl.png
Lets pretend im using the train example. If Im throwing a ball from a moving train, how do I make it stay in line with the train and not go diagonal as the train passes it. Parenting does not work in my case because the ship is able to turn resulting in curved shots etc. It has to somehow take the ships speed/direction as the cannon is fired then apply that to cannonball but still be able to move the cannonball in its fired direction. (e,g right of the ship)
Cant seem to figure out a way to do this would appreciate any ideas.
Answer by Kciwsolb · Apr 19, 2018 at 12:54 AM
Assuming your ship has a Rigidbody. You could get the velocity of the ship when it fires the projectile. Then apply that velocity to the projectile (also assuming it has a Rigidbody). Then apply what ever other force to the projectile you want.
Basically like this (incomplete but you should get the idea):
if(Input.GetButton("FireButton"))
{
Rigidbody projectileRb = Instantiate(projectilePrefab, launcherTransform.position, launcherTransform.rotation).GetComponent<Rigidbody>(); //Instantiate your projectile and store a reference to its Rigidbody
projectileRb.velocity = rigidbody.velocity; //Set the projectiles velocity to that of your ships
projectileRb.AddRelativeForce(new Vector3(0.0f, 0.0f, projectileSpeed), ForceMode.VelocityChange); //Add additional force to the projectile to make it fly
}
Here is what it looks like: https://imgur.com/Xhyd94S
This should be what you are looking for! I hope it helps! :)
Switched my ship controller script to one based on a rigid body and got this working perfectly. Thanks!!!
Your answer
Follow this Question
Related Questions
Make projectile fire diagonally 1 Answer
c# 2D top down, fire projectale which continuously move in a direction 3 Answers
Joystick not firing projectiles from correct location? 1 Answer
Projectile changes direction and angle 1 Answer
How to Have Projectile Reset to Initial Position Relative to Parent 1 Answer