domingo, 27 de junio de 2021

Arranco las cabezas de un zarpazo con el script de ActivateTrigger,;GIMP 2.10.12;Trail Renderer;Unity;

 


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,

(poner imágenes)

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.

(poner imágenes)

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.


(poner imagen)

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.

 



(poner imagen)


Y los sonidos descargados desde http://www.sonidosmp3gratis.com/