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;
}
}
}