- Home /
Object Deletion
Ok so I have this game where I can place objects but when I don't have a object to place in hand I want to be able to delete them with a key. So I tried but doesn't respond… any ideas? Look at the if(objectplace == false) part...
using UnityEngine;
using System.Collections;
public class Placement : MonoBehaviour
{
public bool objectplace = false, newobjectselected = false;
public GameObject block;
private int permanentLayer = 20;
private GameObject nextToPlace;
void Update ()
{
if(objectplace == true)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 14, 1 << permanentLayer))
{
float snap = 0.25f;
Vector3 snapped = new Vector3(Mathf.RoundToInt(hit.point.x/snap)*snap, Mathf.RoundToInt(hit.point.y/snap)*snap, Mathf.RoundToInt(hit.point.z/snap)*snap);
nextToPlace.transform.position = snapped;
if(Input.GetKeyDown("right"))
{
nextToPlace.transform.Rotate(0,90,0);
}
if(Input.GetKeyDown("left"))
{
nextToPlace.transform.Rotate(0,-90,0);
}
nextToPlace.SetActive(true);
if (Input.GetButtonDown("Fire1"))
{
nextToPlace.layer = permanentLayer; // place it, so we can put things on top
// get a new one:
nextToPlace = Instantiate(block, Vector3.zero, Quaternion.identity) as GameObject;
nextToPlace.SetActive(false);
objectplace = false;
}
}
else
{
nextToPlace.SetActive(false);
}
}
if(objectplace == false)
{
if (Input.GetButtonDown("Fire1"))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 14) && hit.transform.CompareTag("[Item]"))
{
if(Input.GetKeyDown("g"))
{
Destroy(hit.transform);
}
}
}
}
}
void LateUpdate()
{
if(newobjectselected == true)
{
Destroy(nextToPlace);
nextToPlace = Instantiate(block, Vector3.zero, Quaternion.identity) as GameObject;
nextToPlace.SetActive(false);
newobjectselected = false;
}
}
}
Try this
if (Input.GetButtonDown("Fire1") && (Input.Get$$anonymous$$eyDown("g"))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 14, 1 << permanentLayer) && hit.transform.CompareTag("[Item]"))
{
Destroy(hit.transform.gameObject);
}
}
well tried it and didn't work so I debuged till I found something that sort of works… I can get it to work if it destroys only on click and does not check for a compare tag. So there must be something wrong with the compare tag but I can't figure it out. They all have the tag on them. Please HELP!
Try to debug the tag like this
if (Physics.Raycast(ray, out hit, 14, 1 << permanentLayer))
{
Debug.Log( hit.transform.tag );
if( hit.transform.CompareTag("[Item]") )Destroy(hit.transform.gameObject);
}
I get nothing back at all, no debug text or destroy. $$anonymous$$akes no sense why when it should be.
Anyone have a idea? Why the thumbs down? At least 0 votes would be better... please I am looking for help not point reduction. :(
Answer by Carbongrip · Feb 20, 2014 at 10:52 PM
I decided to abandon this and start fresh thanks all.
Answer by maxkunes · Jan 03, 2014 at 04:37 AM
This is your issue unless the ray cast isn't working... For sure just tested it and also I think there is another error unless you did not look at the output because the output says distinctly that you "deleting the ray-casts hit transform is not aloud destroy the gameobject instead!!" I am sorry if I couldnt fix everything but that is one of the errors. Destroy(hit.transform); To: Destroy(hit.transform.gameobject);
well changed it to Destroy(hit.transform.gameObject); and I get not a single error… but still can't delete what I want.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Input System binding with one modifier composite value problem 1 Answer
C# Touch Script - Fix GameObject touch. 0 Answers
Using Oculus headgear position as input. 0 Answers