I’m working on a 2D type platformer game where you have to right click on separate objects to make them disappear. I just want them to be destroyed for now so I tried making an OnMouseOver function to work it, but it isn’t always fool proof. Here’s the code so far:
function OnMouseOver()
{
if (Input.GetMouseButtonDown(1))
{
Destroy(gameObject);
}
}
This script should work fine (if attached to the object). The object must be a GUIText, GUITexture or have a collider for OnMouseOver to work. Additionally, if the collider doesn’t match the model shape (as when you have a CharacterController and a humanoid model) you may click on parts of the model without actually hitting its collider - or vice versa, destroying the object when clicking near to the model.
The worst thing about this script is that it must be attached to all destructible objects. If you want a single script to do this job, attach this one to the camera:
function Update(){
if (Input.GetMouseButtonDown(1)){
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var hit: RaycastHit;
if (Physics.Raycast(ray, hit)){
Destroy(hit.transform.gameObject);
}
}
}
You can use this code in the objects update method:
public class DestroyPlayAudio : MonoBehaviour
{
public AudioSource audioSource;
public AudioClip clip;
public float volume=0.5f;
void Update()
{
if (Input.GetButtonDown ("1"))
{
Raycast ray=Camera.main.ScreenPointToRay(Input.mousePosition);
Raycasthit hit;
if (Physics.Raycast(ray, out hit))
{
Destroy(hit.collider.gameObject);
audioSource.PlayOneShot(clip, volume);
}
}
}
}
Insert your audiofile in the variable slot in the Monobehaviour.
If you want to create games fast without coding learn and use Playmaker or Game Creator.