- Home /
Spawning with selected weapons issue
I have tried making several scripts which sends out values and functions to other scripts to make the player spawn with the weapons he/she selected. The problem is that the engine cannot find the weapons inside the parent object. The child objects in the parent were active but still could not be read.
The main problem in the script is found in the CharacterLoadoutScript. Where it tries to find the game object.
GameObject format
-Soldier Set (parent)
---Soldier (child, character controller)
 ---AssaultRifle (child, weapon)
 ---BlackBuster (child, secondary weapon)
 ---StormStick (child, weapon secondary)
CharacterLoadoutScript
 #pragma strict
 
 var weaponSelectObject : GameObject;
 
 var soldierSelected : boolean = false;
 var ninjaSelected : boolean = false;
 var droneSelected : boolean = false;
 var sniperSelected : boolean = false;
 var cyborgSelected : boolean = false;
 
 var primaryNo : int;
 var secondaryNo : int;
 
 var primaryWep;
 var secondaryWep;
 
 var soldierSet : GameObject;
 var ninjaSet : GameObject;
 var droneSet : GameObject;
 var sniperSet : GameObject;
 var cyborgSet : GameObject;
 
 var enableGui : boolean = false;
 
 var respawnCam : GameObject;
 
 function Start () {
 GameObject.DontDestroyOnLoad(transform.gameObject);
 }
 
 function Update () {
 
 if (respawnCam == null && enableGui == true)
 respawnCam = GameObject.Find ("Spawn view cam");
 
 }
 
 function MapSpawn () {
 
 GameObject.DontDestroyOnLoad(transform.gameObject);
 
 
 var respawn : GameObject = GameObject.FindWithTag("Respawn");
 
 respawnCam.active = false;
 
 
 if (soldierSelected)
 {   
     if (respawn != null)
     Instantiate (soldierSet, respawn.transform.position, respawn.transform.rotation);
     
     else
     Instantiate (soldierSet, transform.position, transform.rotation);
 
     if ( primaryNo == 0)
     {
     primaryWep = GameObject.Find("/Soldier Set/AssaultRifle");
     soldierSet.GetComponentInChildren(WeaponSwitching).primary = primaryWep;
     }
     if (secondaryNo == 0)
     {
     secondaryWep = GameObject.Find("/Soldier Set/BlackBuster");
     soldierSet.GetComponentInChildren(WeaponSwitching).secondary = secondaryWep;
     }
     else if (secondaryNo == 1)
     {
     soldierSet.GetComponentInChildren(WeaponSwitching).secondary = GameObject.Find("/Soldier Set/StormStick");
     }
     
     
     
 }
WeaponSelectionGUI
 function SendLoadout () {
 
 loadoutObject.GetComponent(CharacterLoadoutScript).soldierSelected = selectedSoldier;
 
 if ( selectedSoldier)
 {
 loadoutObject.GetComponent(CharacterLoadoutScript).primaryNo = soldierSelectGrid;
 loadoutObject.GetComponent(CharacterLoadoutScript).secondaryNo = soldierSelectGridSecondary;
 }
 function OnGUI (){
     if (enableGUI)
     {
     GUI.Box (Rect (0,0,200,50), "Primary");
     GUI.Box (Rect (0,Screen.height- 350,200,50), "Secondary");
     
         if ( selectedSoldier)
         {
         soldierSelectGrid = GUI.SelectionGrid (Rect (0, 50, 200, 100), soldierSelectGrid, soldierGridStrings, 2);
         
         soldierSelectGridSecondary = 
         GUI.SelectionGrid (Rect (0, Screen.height-300, 200, 100), soldierSelectGridSecondary, soldierGridStringsSecondary, 2);
         }
WeaponSwitching
 var primary : GameObject;
 var secondary : GameObject;
Error Message
NullReferenceException: Object reference not set to an instance of an object CharacterLoadoutScript.MapSpawn () (at Assets/CharacterLoadoutScript.js:59) CharacterLoadoutScript.OnGUI () (at Assets/CharacterLoadoutScript.js:98)
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                