Hi Guys! I’m adding landmines into my game… now i want to be able to deactivate it if i can aim at it with the E key. So if i was going to add a peice of code to my script to be able to destroy the object if i click E on it. how would i do this and how would i make it show on screen saying “Press E To Disable LandMine.” Info is appreciated. Here is The landmine script.
var hitPoints : float = 300.0;
var explosion : Transform;
private var callFunction : boolean = false;
function OnTriggerEnter (other : Collider) {
if (other.CompareTag ("Enemy")) {
other.SendMessageUpwards("ApplyDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
Explosion();
}
if (other.CompareTag ("Player")){
other.SendMessageUpwards("PlayerDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
Explosion();
}
}
function ApplyDamage(){
yield WaitForSeconds(0.5);
Explosion();
}
function Explosion(){
if(callFunction)
return;
callFunction = true;
yield WaitForSeconds(0.1);
Instantiate (explosion, transform.position, transform.rotation);
Destroy(gameObject);
}
In your Update() method, use Physics.Raycast() to do a ray/collider intersection test on the world. Check if the ray intersected with a landmine’s collider and perform your logic to display the message and destroy the landmine when ‘E’ is pressed.
Here’s the roughed out logic…
// For ease-of-use, you probably want to make the deactivation message a GUIText
// component attached to a gameobject. This way you can simply activate and
// deactivate the parent gameobject to show and hide the message at will.
public var LandmineDeactivationMessage:GameObject;
var landmineDeactivationKey:KeyCode = KeyCode.E;
var rayOrigin:Vector3; // Set this to the cursor position in world space.
var rayDirection:Vector3; // This will usually be the camera's forward vector.
var rayLength:float=500; // Set this to the desired maximum interaction distance.
var hit:RaycastHit;
if (Physics.Raycast(rayOrigin, rayDirection, hit, rayLength))
{
// Check if the collider hit is a landmine
if (hit.collider.tag == "Landmine")
{
// Turn on the landmine deactivation message.
if (LandmineDeactivationMessage.active == false)
LandmineDeactivationMessage.active = true;
// Remove the landmine when the user hits the deactivation key.
if (Input.GetKeyDown(landmineDeactivationKey) == true)
GameObject.Destroy(hit.collider.gameObject);
}
}
else
{
// Turn off the landmine message when the cursor moves off.
if (LandmineDeactivationMessage.active == true)
LandmineDeactivationMessage.active = false;
}
thanks for this mate. will test this out