- Home /
Question by
Ekta-Mehta-D · Feb 26, 2013 at 11:43 AM ·
raycasttransformshootinghit
Object Does not Destroyed While Shooting
I am currently Learning Unity. I have created First person Controller with gun under the main camera in hierarchy.but when i shoot an object i get runtime error :
nullreference exception : object reference not set to an instance of an object.
I have written code for shooting :
Here is my code:
var shotSound: AudioClip; // drag a shot sound here, if any
// the PickupController component of the 'PickupSpawnPoints' GameObject
private var pickupController:PickupController;
function Update(){
if (Input.GetKey(KeyCode.Space)) {
Shoot();
}
}
function Shoot(){
if (shotSound) audio.PlayOneShot(shotSound); // play the shot sound
var hit: RaycastHit;
var ray : Ray = Camera.main.ViewportPointToRay (Vector3(0.5,0.5,0));
if (Physics.Raycast (ray ,hit))
{
var pickupSpawnPoints:GameObject = hit.collider.gameObject;
if(pickupSpawnPoints.tag == "Pickup")
{
pickupSpawnPoints.GetComponent(typeof(PickupController)).Collected(pickupSpawnPoints); // here i get error.
}
}
}
Calling function is here:
function Collected(pickupCollected:GameObject)
{
// retrieve name of the collected pickup and cast to int
var index:int = parseInt(pickupCollected.name);
// pickup has been destroyed so make the spawn index available again
spawnIndexAvailableList[index] = true;
// retrieve the pickup state
var type:int = pickupCollected.GetComponent(Pickup).type;
// update the score depending on the type of pickup
if (type == 1)
{
score+=2; // simply add 2 to the score
}
else if (type == 2)
{
score += Random.Range(-2, 5); // add a random score between -2 and 5 to the score
}
// update the score
UpdateScoreText();
// destroy the pickup
Destroy(pickupCollected);
// wait for a random amount of seconds between minimumSpawnDelayTime and maximumSpawnDelayTime
yield WaitForSeconds(Random.Range(minimumSpawnDelayTime, maximumSpawnDelayTime));
// spawn a new pickup
SpawnPickup();
}
So how do i destroy my object.? how do i solve my error? I have no idea about it so please help me. Thanks in Advance for your support.
Comment
Best Answer
Answer by Ekta-Mehta-D · Feb 26, 2013 at 02:30 PM
I have solved my problem i have directly destroy object instead of calling function.
Destroy(hit.collider.gameObject);
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
First Person Controller Target Shooting With Gun 1 Answer
2D : RayCast Problem 1 Answer
AI Shooting for Aircraft 1 Answer
Basic Shooting Game 1 Answer