- 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
![](https://koobas.hobune.stream/wayback/20220613123142im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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