Shooting bullets up (y axis)
Hello!
I would like to shoot bullets in my 2D Platformer up. I have managed to shoot left or right. I know it is a little bit stupid not to work with rigidbody2d but I have a very smooth character controller and for now I am a little bit lazy to write a new movement script,
So here is my blockshooting script:
using UnityEngine;
using System.Collections;
public class BlockShooter : MonoBehaviour {
public Transform bulletPosition;
public AudioClip shootSound;
public Sprite[] shoot;
public float bulletSpeed = 16.0f;
private bool shooting = false;
private float counter = 1.0f;
public GameObject enemyBullet;
public GameObject enemyBulletUp;
private SpriteRenderer rend;
public bool y = false;
// Use this for initialization
void Start () {
rend = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update () {
counter -= Time.deltaTime;
if (counter < 0)
{
StartCoroutine(shootBullet());
rend.sprite = shoot[1];
}
/*if(shooting){
rend.sprite = shoot[0];
}*/
}
public IEnumerator shootBullet () {
shooting = true;
counter = 1.0f;
//we wait for a bit before the shot fires so that the player can see he's about to do it
yield return new WaitForSeconds(0.5f);
rend.sprite = shoot [0];
//play the shot sound
GetComponent<AudioSource>().PlayOneShot(shootSound);
if (y == true) {
GameObject bullet = Instantiate(enemyBulletUp, bulletPosition.position, Quaternion.Euler(0,0,90)) as GameObject;
Debug.Log("Y is true");
bullet.GetComponent<Rigidbody>().velocity = new Vector3(GetComponent<Rigidbody>().velocity.x, 20, GetComponent<Rigidbody>().velocity.z);
}
//spawn the bullet
GameObject bullet1 = Instantiate(enemyBullet, bulletPosition.position, Quaternion.Euler(0,0,0)) as GameObject;
//set velocity to the bullet
if(bulletPosition.position.x < transform.position.x){
bullet1.GetComponent<Rigidbody>().velocity = new Vector3(-bulletSpeed,0,0);
}else{
bullet1.GetComponent<Rigidbody>().velocity = new Vector3(bulletSpeed,0,0);
}
//then pause again before the enemy is ready to fire again.
yield return new WaitForSeconds(0.5f);
shooting = false;
}
}
I think I do something wrong in the if(y==true) section. I have two bulletprefabs because at the one is the x postion freezed and at the other the y position,
I hope someone can help me.
Greetings.
Your answer
Follow this Question
Related Questions
Corgi Engine - Character glitches with "jump" animation on top of a ladder 0 Answers
No overload for method 'fireBullet' takes 0 arguments 1 Answer
How to have multiple enemies (currently having to kill them in order) 1 Answer
How to make an enemy 2d chasing player? 1 Answer
Stop Point objects respawning when reloading level 0 Answers