I’m working on some small project here.
What I basically want to do is when a key is pressed the player changes the bullets he fires.
Now I know how to fire bullets.
But the changing of the bullets when key is pressed is something I cant figure out.
I would love to get some guidance or be pushed into the right direction so I can make this.
What I would do is make a array or list of prefabs for the bullets. Then I would make an int variable(curBullet for exsample) to store the current bullet. When the player presses the change weapon button he would change the curBullet variable, and I would instatiate the bullet matching the position in the array. Here is what the code would look like if that was a bit confusing:
public class FireBullets : MonoBehaviour {
public GameObject[] bullets;
int curBullet = 0;
void Update ()
{
if (Input.GetKey(KeyCode.Tab))
{
// Add one to the curBullet variable when the player presses tab.
//This will allow you to fire the next bullet in the bullets Array
curBullet++;
// If the curBullet is higher than the bullet array length set it back to 0
if (curBullet > bullets.Length)
{
curBullet = 0;
}
}
if (Input.GetButton("Fire1"))
{
// Fire the bullet matching is position in the array of bullets
Instantiate(bullets[curBullet], transform.position, transform.rotation);
}
}
}
Are you using a line renderer? In which case you should change the material/texture/hue.
If you are generating new objects for eact bullet, just change the type of bullet being instantiated by having a GameObject that gets spawned and using your listener to adjust what that object is.
Example:
using UnityEngine;
using System.Collections;
class asd
{
public GameObject bullet;
void Update()
{
if( Input.getButton( "valueForFiring" ) )
Instantiate(bullet);
}
public void changeBullet( GameObject newBullet)
{
bullet = newBullet;
}
}