- Home /
Cannot cast from source type to destination type ERROR!
#pragma strict
var Effect : Transform;
var TheDammage = 100;
function Update () {
var hit : RaycastHit;
var ray : Ray = Camera.main.ScreenPointToRay(Vector3(Screen.width*0.5, Screen.height*0.5, 0));
if (Input.GetMouseButtonDown(0))
{
if (Physics.Raycast (ray, hit, 100))
{
var particleClone = Instantiate(Effect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(particleClone.gameObject, 2);
hit.transform.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
}
}
}
using UnityEngine; using System.Collections;
public class RayCastShoooting : MonoBehaviour {
public GameObject Effect;
public float damage;
// Update is called once per frame
void Update () {
RaycastHit hit = new RaycastHit ();
Ray ray = camera.ScreenPointToRay(new Vector3(Screen.width/2, Screen.height/2, 0));
if(Input.GetMouseButtonDown(0))
{
if(Physics.Raycast(ray, out hit, 100))
{
GameObject particleClone = (GameObject)Instantiate(Effect, hit.point, Quaternion.identity);
Destroy (particleClone.gameObject, 2);
hit.transform.SendMessage("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
}
}
}
}
I'm translating the to JavaScript to C# but I get this error: InvalidCastException: Cannot cast from source type to destination type. RayCastShoooting.Update () (at Assets/Scripts/RayCastShoooting.cs:19)
What line is generating the error. Please copy and past the error message from the console into your question.
The error is at line 19 GameObject particleClone = (GameObject)Instantiate(Effect, hit.point, Quaternion.identity);
Answer by CoalCzar · Dec 01, 2013 at 06:51 AM
In C# the code you are looking for is:
GameObject particleClone = Instantiate(Effect, hit.point, Quaternion.identity) as GameObject;
wow thanks!!
btw what's the difference in having GameObject.Instantiate and with only Instantiate?
Answer by robertbu · Dec 01, 2013 at 06:51 AM
Change your code as follows:
if (Physics.Raycast (ray, hit, 100)) {
var particleClone = Instantiate(Effect, hit.point, Quaternion.LookRotation(hit.normal)) as GameObject;
Destroy(particleClone, 2);
hit.transform.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
}
It is the 'as GameObject' that fixes your error. In addition, you don't need the '.gameObject' in the Destory() call.
Your answer
Follow this Question
Related Questions
cant kill more than one enemy C# 2 Answers
Cannot cast from source to destination type 1 Answer
A node in a childnode? 1 Answer
Unity Car Tutorial Error 0 Answers
Camera's wont change 2 Answers