- Home /
i would like to create a preview of an instantiation but im haveing a problem with my code
I'm trying to make a preview of where i want to place something in the world the whole shell that is slightly transparent and no physics my problem is that my code does make a preview (i haven't done the removing physics and making it transparent part yet but i will) but the next time it places it it places it on the last one it previewed?
Destroy(preveiw);
if (Screen.lockCursor == true)
{
if (inventory.equiped.itemName != null)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Physics.Raycast(ray, out hit);
Debug.Log("hit" + hit.point);
Debug.Log("was " + hit.distance.ToString() + " away");
}
if (inventory.equiped.itemName != null && inventory.equiped.itemType.ToString().EndsWith("Getable"))
{
if (hit.distance < 6)
{
if ( hit.rigidbody.name != preveiw.name)
{
preveiw = Instantiate(Resources.Load("block/" + inventory.equiped.itemName),hit.point, Quaternion.Euler(0,rotationParent.transform.eulerAngles.y,0)) as GameObject;
}
}
Answer by AlwaysSunny · Aug 31, 2014 at 12:57 AM
If I understand what you want, you'd like to temporarily show your prefab in the world using a different material, but you don't want your original prefab to be changed, and you don't want a new "preview prefab" for each original prefab.
Shouldn't be too hard:
Instantiate your original prefab
Make sure its various scripts remain disabled
Change the material of the instance
Let it follow the mouse position or whatever
Destroy it when you place or cancel
Instantiate the original in its place if didn't cancel