Question by
mickymouse3108 · Sep 21, 2016 at 11:40 PM ·
c#charactercontrollerbullet
Bullet Not moving Forward with speed
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;
}
}
}
Comment
maybe is because the direction issue, try to use transform.right
Answer by OutOfRam · Sep 22, 2016 at 02:10 AM
Are the bullets set to Kinimatic? also I'd recommend using Add Force rather than setting velocity
Could you please share the code of whatever you are referring to?
Your answer
Follow this Question
Related Questions
my 3d character is animating perfectly but character is not moving when walk 0 Answers
How I can do stop animation when the key let go? 0 Answers
Grappling hook physics script error 0 Answers
Smoth LookAt Unity c# 0 Answers
How to add Android Touch Controls to Unity Survival Shooter Tutorial 1 Answer