Tutorial hacer efecto de explosion y
habrir una caja fuerte.
Tenemos el gráfico de la caja fuerte
cerrada.
Tenemos el gráfico de la caja fuerte
abierta.
Tenemos un gráfico de un cubo que lo
usaremos como detonador de la dinamita.
Tenemos otros tres cubos alejados de
la escena que usaremos como una especie de enlace o circuito para
desencadenar la escena final de la caja reventada y abierta.
Todo con formato fbx. Y necesitamos el
script ActivateTrigger en C #.
El script ActivateTrigger, nos sirve
para que al impactar con otro grafico el cubo mas cercano a la caja
cerrada, borre, mejor dicho cambie de los tres cubos que emos puesto
aparte alejados de la caja, nos cambie el del centro, por otro
grafico que este vacio o con el triger marcado , el cubo que esta
encima de el que tiene un rigid bodi con la gravedad se apoya en el
que se borrara el del centro de la flecha roja, al no tener el apoyo
del que hay en el centro, choca con el tercero avajo del todo que
tiene otro script ActivateTrigger, con la orden de cambiar el grafico
de la caja cerrada por el de la caja abierta, la caja abierta tiene
como hijo el efecto de particulas que biene con el standar asset de
unity de explosion fogonazo, bueno hay varios tipos se puede poner el
que mejor efecto produzca para lo que se quiera hacer.....mirare de
hacer también una explicacion con un video de youtube para
complementar esta pagina.
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();
}
}
}
Soy el propio autor del blog,con las prisas me deje un detalle de esta pagina, falta un script,Timer destruccion, se a de poner en el cubo que sustitulle al central, se pone un tiempo para que se borre y al caer dobre el ultimo aga funcionar por activate triger el cambio de caja por el de la caja abierta con efecto explosion....en breve pondre en la pagina y el video este detalle que descuide.
ResponderEliminarTambien se pude cambiar la velocidad de gravedad en el cubo que esta enzima de los otros dos, que tiene el rigidbody, y al caer mas lento hace efecto de tiempo y el cambio de la caja cerrada a la abierta es mas lento....
ResponderEliminar