In my game I want it so the player can place blocks for the puzzle to be completed. I tried to just use the Instaniate and then the game object but that didn’t work since I needed to specify a position.I want it so the cursor would be in the spot and when they click the object will appear.
You can use a Raycast to get the position providing there is a collider under the cursor.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public GameObject particle;
void Update() {
if (Input.GetButtonDown("Fire1")) {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray))
Instantiate(particle, transform.position, transform.rotation);
}
}
}
What do you mean by "There is a collider Under the cursor? " @karl_jones
I tried to use it but it didn’t work so I think its something to do with the collider you are talking about. I just don’t know how to apply a collider to a cursor.
You can instantiate the object at specified length from the ray.
This code will instantiate the object on the screen where the mouse is, but at a z axis coordinate equal to the absolute distance the camera is from zero. i.e it will have a z coordinate of zero.
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 position = (ray.origin + ray.direction * Mathf.Abs(Camera.main.transform.position.z));
GameObject yourObject = Instantiate (thePuzzlePiece);
yourObject.transform.position = position;