Bien sigo con mi videojuego comentando últimos de talles del trabajo.
Ahora explicare como arranco las cabezas de un zarpazo con el script de ActivateTrigger, pondré el script para el que lo quiera copiar, creo que ya lo e puesto mas de 10 veces a lo largo de mi blog, pues otra vez porque es indispensable.
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();
}
}
}
Detalles de la sangre en el suelo, mismo script ActivateTrigger,
Detalles de la salpicadura de sangre en el asiento en el respaldo,mismo script ActivateTrigger, esta vez e utilizado el programa gratuito GIMP 2.10.12 para pintar gráficos.
(poner imagen)
Abriendo gimp crear nuevo archivo con transparencia, usar la herramienta de aerografo para pintar unas salpicaduras de sangre y para que se vea la transparencia muy importante exportar en formato “PNG” este detalle es muy importante,
luego pasar ese archivo a Unity y hacer un plano ponerle esa textura, hacer un prefabricado de esta y poner en el respaldo del asiento un plano sin la textura.
Para la sangre en el suelo e puesto unos planos que hacen el cambio de charcos de sangre también utilizando ActivateTrigger, y para que no se vean les e quitado el Mesh, en las imágenes podéis ver señalado en círculos blancos los detalles mas importantes que intento explicar , creo que cuantas mas imágenes ponga mejor podrá entenderse lo que me gusta explicar.
La sangre en el suelo la e echo con los recursos gratuitos que ofrece Unity
Standard Assets Environment Water desde la versión 2018,2,1f1 de Unity que al final es la que estoy utilizando para hacer el videojuego ya que estoy mas echo a esta versión.
Otros detalles son utilizar desde Unity el efecto Trail Renderer, se lo aplico a unas esferas como hijos del cuerpo decapitado y de la cabeza decapitada para que agan un efecto de salpicadura.
Y los sonidos descargados desde http://www.sonidosmp3gratis.com/