- Home /
Can't get 2d Scroller to move projectile when fired.
I am making a 2d side scrolling game where the player controller script allows the player to fire a projectile when the "Fire1" axis is set to true. I have a prefab of the shot that holds the following components: Rigid Body2D, Box Collider and a Sprite Render. The issue that I am having is that when I instantiate the object and try to add velocity to it nothing happens. Here is the code below:
public class PlayerControler : MonoBehaviour {
// PUBLIC VARS:
public Vector2 _speed = new Vector2(1, 1);
public Vector2 _shotSpeed = new Vector2(5, 0);
public int _shotDamage = 1;
public GameObject _projectile;
// PRIVATE VARS:
private Vector2 _movement = new Vector2();
private bool _firedShot = false;
void Update()
{
var x = Input.GetAxis("Horizontal");
var y = Input.GetAxis("Vertical");
_movement.x = x * _speed.x;
_movement.y = y * _speed.y;
if (Input.GetButtonUp("Fire1"))
{
_firedShot = true;
FiredShot();
}
_shotSpeed.x = 1 * _shotSpeed.x;
_shotSpeed.y = 1 * _shotSpeed.y;
}
void FixedUpdate()
{
rigidbody2D.velocity = _movement;
}
void FiredShot()
{
if (_firedShot)
{
Instantiate(_projectile, transform.position, Quaternion.identity);
_projectile.rigidbody2D.velocity = _shotSpeed;
_firedShot = false;
}
}
}
Answer by robertbu · Oct 29, 2014 at 04:03 AM
You are setting the velocity of the prefab, not the instantiated object: Do:
if (_firedShot)
{
_newProjectile = (GameObject)Instantiate(_projectile, transform.position, Quaternion.identity);
_NewProjectile.rigidbody2D.velocity = _shotSpeed;
_firedShot = false;
}
Note that '_shotSpeed' is a public variable, so you need to verify the value in the Inspector. The value set in code is only used at the time the script is attached.
Your answer
Follow this Question
Related Questions
Variable isn't assigned, even though I have assigned it in the Start() method 2 Answers
NullReferenceException: UnityEngine.Rigidbody2D.get_velocity() 0 Answers
Rigidbody2D velocity relative to screen size 1 Answer
Moving colliders that are part of a composite collider 1 Answer
Character won't move (Fixed) 1 Answer