Network Instantiation works on one command and does not work on another
Hey there, I am making a little Fun Lan Shooter-Arena.
In this, the Bullets are Rigidbody Objects, you take no Damage but can be killed wenn pushed into certain Objects.
Now i have two ways of Firing such a "Ball" firstly, direct witch lower velocity or alternatively you charge .8 seconds and projectile is more forceful.
public GameObject bulletPrefab;
public Transform bulletSpawn;
public AudioClip blastSound;
public AudioClip chargeSound;
AudioSource audio;
void Start () {
if (!isLocalPlayer ) {
return;
}
audio = GetComponent<AudioSource>();
}
// Update is called once per frame
void Update ()
{
if (!isLocalPlayer ) {
return;
}
if(Input.GetButtonDown("Fire1"))
{
CmdShoot();
audio.PlayOneShot(blastSound);
}
if(Input.GetButtonDown("Fire2"))
{
StartCoroutine (Downtime());
audio.PlayOneShot(chargeSound);
}
}
IEnumerator Downtime()
{
yield return new WaitForSeconds (0.8f);
CmdChargedShot();
audio.PlayOneShot(blastSound);
}
[Command]
void CmdShoot()
{
GameObject bullet = (GameObject)Instantiate (bulletPrefab, bulletSpawn.position, bulletSpawn.rotation);
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 25;
NetworkServer.Spawn(bullet);
Destroy(bullet, 6.0f);
}
[Command]
void CmdChargedShot()
{
GameObject bullet = (GameObject)Instantiate (bulletPrefab, bulletSpawn.position, bulletSpawn.rotation);
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 50;
NetworkServer.Spawn(bullet);
Destroy(bullet, 6.0f);
}
}
As you can see, the Code is almost the same, however in Multiplayer the Client can only fire the second way. The Audio is played on "Fire1" but no bullet on the Client OR the server is spawned. "Fire2" works fine on Clients and Host. The console log is:
NullReferenceException: Object reference not set to an instance of an object Fire.CmdShoot () (at Assets/Fire.cs:54)
Since both functions CmdShoot and CmdChargedShot use the same Prefab, I really don't understand what is going on here, so I greatly appreciate any Help or Suggestions!
Your answer
Follow this Question
Related Questions
Client's object spawn position and rotation network bug? 0 Answers
Keeping an object in a multiplayer scene, when a player joins. 3 Answers
Why does NetworkServer.ReplacePlayerForConnection not recognize the instantiated object parameter? 0 Answers