I am having a Crate in my scene and i have also a cracked_Crate. I want to make the Crate break when i am in a radius of 2f (i already have a script that says to change crate for cracked crate while i click it) but if i set a radius on it . It wont work, so my question is can any one help me to make the crate only break while holding my axe in my hand?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Destructible : MonoBehaviour {
public GameObject destroyedVersion;
void OnMouseDown ()
{
Instantiate(destroyedVersion, transform.position, transform.rotation);
Destroy(gameObject);
}
}
public class ObjectBreaker : Monobehaviour
{
public Transform breakables;
public Transform player;
public GameObject destroyedVersion;
public float distanceCanBreakObject = 2f;
private float sqrLen;
void Start()
{
sqrLen = distanceCanBreakObject * distanceCanBreakObject;
}
void Update ()
{
if (Input.GetMouseButton(0) && hasAxeInHand)
{
foreach (breakable in breakables)
{
var offset = breakable.position - player.position;
var sqrLen = offset.sqrMagnitude;
if (sqrLen < this.sqrLen)
{
Instantiate(destroyedVersion, breakable.position, breakable.rotation);
Destroy(breakable);
}
}
}
}
}
- Have a list of creates
- Listen for a click
- When clicked destroy all creates in radius (calculated using squared Magnitude)
You could replace Input.GetMouseButton(0)
with Input.GetMouseButtonDown(0)
if you want the player to spam his/her mouse button