Can someone tell the problem with my Fire()? Bullets are just standing there and not going forward!
using UnityEngine;
using System.Collections;
public class CaptainAmerica : MonoBehaviour {
public float moveForce = 20f;
public float jumpForce = 700f;
public float maxVelocity = 4f;
public Transform Bullet_Emitter;
public GameObject Bullet;
private bool grounded;
private Rigidbody2D myBody;
private Animator anim;
void Awake()
{
InitializeVariables ();
}
void Start ()
{
}
void Update ()
{
PlayerWalkKeyboard ();
if (Input.GetKeyDown (KeyCode.Space))
{
Fire ();
}
}
void Fire()
{
GameObject bullet_var = Instantiate (Bullet, Bullet_Emitter.position, Bullet_Emitter.rotation) as GameObject;
bullet_var.GetComponent<Rigidbody2D> ().velocity = bullet_var.transform.forward * 60.0f;
Destroy (bullet_var, 5.0f);
}
void InitializeVariables()
{
myBody = GetComponent<Rigidbody2D> ();
anim = GetComponent<Animator> ();
}
void PlayerWalkKeyboard()
{
float forceX = 0f;
float forceY = 0f;
float vel = Mathf.Abs (myBody.velocity.x);
float h = Input.GetAxisRaw ("Horizontal");
if (h > 0)
{
if (vel < maxVelocity) {
if (grounded) {
forceX = moveForce;
} else {
forceX = moveForce * 1.1f;
}
}
Vector3 scale = transform.localScale;
scale.x = 1f;
transform.localScale = scale;
anim.SetBool ("Walk", true);
} else if (h < 0) {
if (vel < maxVelocity) {
if (grounded) {
forceX = -moveForce;
} else {
forceX = -moveForce * 1.1f;
}
}
Vector3 scale = transform.localScale;
scale.x = -1f;
transform.localScale = scale;
anim.SetBool ("Walk", true);
} else {
anim.SetBool ("Walk", false);
}
if (Input.GetKey (KeyCode.UpArrow)) {
if (grounded) {
grounded = false;
forceY = jumpForce;
}
}
myBody.AddForce (new Vector2 (forceX, forceY));
}
void OnCollisionEnter2D(Collision2D target) {
if (target.gameObject.tag == "Grounds") {
grounded = true;
}
}
}