¿Como destruir enemigos con Unity?
Pongo divertido video de YouTube explicando el tema, divertido para mi, por que me estoy de paso promocionando, en plan que estupendo soy lo estoy haciendo todo genial...¡¡¡¡ja ja ja ja ja !!!!
(Se escuchan unos rujidos de fondo, pertenecen al juego cuando se ejecuta, pero no molestan excesivamente para comprender el video, solo duran unos momentos... )
Explico un problema que tenia con colisiones y destrucción de enemigos.
Creo esta resuelto con el siguiente script en C#….
ESCALAR
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ESCALAR : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.M))// funciona pasito a pasito
// En los 3 ejes estatico.
//transform.localScale = new Vector3 (0.5f * Time.deltaTime, 0.5f, 0.0f);
// En los 3 ejes Dinámico.
// transform.localScale += new Vector3 (0.5f * Time.deltaTime, 0.0f, 0.0f);
// En un solo eje Dinámico.
transform.localScale += Vector3.right * 77* Time.deltaTime;
if (Input.GetKeyUp(KeyCode.M))// funciona pasito a pasito
transform.localScale -= Vector3.right *77* Time.deltaTime;
}
}
al apretar la tecla “m” la esfera que tiene el hombre lobo se escala y al tocar el Trigger activado de la victima produce su aniquilación, esta asu vez tiene el script de “activate Trigger” que hace el cambio de personajes de vivo a aniquilado.
using System;
using UnityEngine;
using Object = UnityEngine.Object;
namespace UnityStandardAssets.Utility
{
public class ActivateTrigger : MonoBehaviour
{
// A multi-purpose script which causes an action to occur when
// a trigger collider is entered.
public enum Mode
{
Trigger = 0, // Just broadcast the action on to the target
Replace = 1, // replace target with source
Activate = 2, // Activate the target GameObject
Enable = 3, // Enable a component
Animate = 4, // Start animation on target
Deactivate = 5 // Decativate target GameObject
}
public Mode action = Mode.Activate; // The action to accomplish
public Object target; // The game object to affect. If none, the trigger work on this game object
public GameObject source;
public int triggerCount = 1;
public bool repeatTrigger = false;
private void DoActivateTrigger()
{
triggerCount--;
if (triggerCount == 0 || repeatTrigger)
{
Object currentTarget = target ?? gameObject;
Behaviour targetBehaviour = currentTarget as Behaviour;
GameObject targetGameObject = currentTarget as GameObject;
if (targetBehaviour != null)
{
targetGameObject = targetBehaviour.gameObject;
}
switch (action)
{
case Mode.Trigger:
if (targetGameObject != null)
{
targetGameObject.BroadcastMessage("DoActivateTrigger");
}
break;
case Mode.Replace:
if (source != null)
{
if (targetGameObject != null)
{
Instantiate(source, targetGameObject.transform.position,
targetGameObject.transform.rotation);
DestroyObject(targetGameObject);
}
}
break;
case Mode.Activate:
if (targetGameObject != null)
{
targetGameObject.SetActive(true);
}
break;
case Mode.Enable:
if (targetBehaviour != null)
{
targetBehaviour.enabled = true;
}
break;
case Mode.Animate:
if (targetGameObject != null)
{
targetGameObject.GetComponent<Animation>().Play();
}
break;
case Mode.Deactivate:
if (targetGameObject != null)
{
targetGameObject.SetActive(false);
}
break;
}
}
}
private void OnTriggerEnter(Collider other)
{
DoActivateTrigger();
}
}
}