- Home /
 
 
               Question by 
               RavenRain44 · Jul 23, 2020 at 02:07 PM · 
                instantiateraycastparticles  
              
 
              Why cant this work
So i want a particle to spawn at the ray cast point but it won't work.
 public GameObject Mouse;
 public GameObject Particle;
 void Update()
 {
     RaycastHit hit;
     if (Physics.Raycast(origin: camera.position, direction: camera.forward, out hit))
     {
         
         Point = hit.point;
         if (Input.GetMouseButtonDown(0))
         {
             Instantiate(Particle, Point.position, Point.rotation);
         }
     }
 }
 
              
               Comment
              
 
               
              "it won't work" is a bad way to describe a problem. Be specific here. What does not work? what happens exactly? Are there any errors?
Is your raycast even hitting anything? It has to hit like a wall or something to detect a collision. If your raycast just keeps going to the skybox, it wont know what 'point' is.
Answer by Llama_w_2Ls · Jul 23, 2020 at 02:49 PM
Heres my code for how I destroy an instantiated object whenever I click on it, and a particle system effect plays at that point:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class DestroyCubes : MonoBehaviour
 {
     public Camera fpsCam;
 
     public Transform Parent;
 
     public float distance;
 
     Vector3 newPos;
     public Transform Explosion;
     public ParticleSystem plode;
 
     public Text Score;
     public float score;
 
     public AudioClip pop;
     // Start is called before the first frame update
     void Start()
     {
         newPos = Explosion.position;
         this.gameObject.AddComponent<AudioSource>();
         this.GetComponent<AudioSource>().clip = pop;
     }
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetMouseButtonDown(0)) // if click detected and game is not paused
         {
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //Create ray that points to mouse click
             Vector3 Ray = ray.direction;
             RaycastHit hit;
 
             if (Physics.Raycast(fpsCam.transform.position, Ray, out hit))
             {
                 if (hit.collider != null) // if i hit something
                 {
                     distance = hit.distance / 150; //get distance from camera
 
                     if (hit.collider.tag != "Borders") //if i hit anything except my game borders
                     {
                         hit.collider.transform.SetParent(Parent); //parent the object to an empty gameobject called 'Parent'
                     }
 
                     newPos = hit.point; //set transform of explosion particle system to click
 
                     foreach (Transform child in Parent) //if a child is detected in the empty gameobject 'Parent'
                     {
                         Destroy(child.gameObject); //destroy the child object
                         score += 10 + distance; //add ten points + extra for longer distance blocks
                         Score.text = score.ToString("0"); //set text to score
                         Explosion.position = newPos; //set explosion position to object destroyed/mouseclick position
                         plode.Play(); //play particle system effect
                         //this.GetComponent<AudioSource>().Play();//play pop sound
                         AudioSource.PlayClipAtPoint(pop, fpsCam.transform.position, 0f);
                     }
                 }
             }
         }
     }
 }
 
 
              Sorry, theres a lot of extra code for calculating points for a score system and playing sounds etc. Just take what you need
Your answer