I am very new to Unity, and I am trying to make a very very simple Minecraft-inspired game.
The world is made out of 1x1x1 cubes, and always right in front of the player, there is a small cube to show what block is targeted. What I basically want to do is this:
Destroy the GameObject that is touching the cube.
I am using JavaScript.
Btw, the blocks that will be destroyed are instances of a prefab.
(sorry if this is unclear, it is kinda hard to explain. If something is unclear, feel free to ask :))
You can use OnTriggerEnter to get the currently-touched object, and OnTriggerExit to clear it.
If your targeting cube is a Collider marked as a Trigger, and it has a Rigidbody marked as Kinematic, and your level cubes are Colliders not marked as Trigger and tagged as “gameBlock”, I believe the following will work (you may need to attach kinematic rigidbodies to the level cubes, or move the targeting cube less than instantaneously between cubes):
[TargetingCube.js]
private var target : GameObject;
function OnTriggerEnter( other : Collider ) {
if ( other.tag == "gameBlock" ) {
target = other.gameObject;
}
}
function OnTriggerExit( other : Collider ) {
if ( target == other.gameObject ) target = null; // only clear target if we haven't already gotten a new one
}
function GetTarget() : GameObject { return target; }
function DestroyTarget() { if ( target ) Destroy( target ); target = null; }
Or you can use Physics.OverlapSphere to get all objects within (0.1) of the ‘targeting cube’ and destroy that one object that is returned
Those are my recommendations anyway.
Also if you have any decent-sized level you’ll have so many cubes by the end your computer will melt.