TUTORIAL DISPAROS CON UNITY. Y CON BLENDER

DESCARGATE TODO EL CONTENIDO DEL VIDEO, DESDE MEDIAFIRE, NO ENCONTRARAS NINGUN EJEMPLO MEJOR EN TODO INTERNET EN TODO EL PLANETA.

https://www.mediafire.com/file/oktcokhfakg5qdm/ESTUDIO_DE_DISPAROS.zip/file
DESCARGATE TODO EL CONTENIDO DEL VIDEO, DESDE MEDIAFIRE, NO ENCONTRARAS NINGUN EJEMPLO MEJOR EN TODO INTERNET EN TODO EL PLANETA.

TUTORIAL DISPAROS CON UNITY.
Boy a explicar lo imprescindible para hacer disparos con unity.
Necesitamos un solo script llamado.Launcher.
Con este solamente ya se puede disparar.
Luego hay uno complementario, para que el juego no se pare ralentice al ir acumulando proyectiles que llenan la pantalla y no se borran,, yo le puesto de nombre.BORRAMIBALA. que va borrando el gráfico de los proyectiles, al cabo de unos segundos.

Hacemos un cubo que aga como de player, al cubo le añadimos un game object  create empty que es solamente las flechas con los ejes y,z,x.
Cogemos el script Launcher y lo arrastramos al create empty,
cogemos el gráfico projectile y lo arrastramos a la casilla projectile.
Luego cogemos el game object y lo arrastramos a la casilla Launch hole 1 y hacemos lo mismo con el Launch hole 2, para que no nos de error al ejecutar el juego, funcionaria poniéndolo solo en el 1 pero es mejor hacerlo en los dos por si alargamos el juego, para que no tenga conflictos cuando lo vallamos complicando.
Los otros scripts son para mover el player,TransformFunctions.
Para borrar los proyectiles, BORRAMIBALA.
Y para cambiar un gráfico por otro al impactar un proyectil , muy muy útil para futuros proyectos de personajes con animaciones diversas....ActivateTrigger.
Aquí teneis un video donde podeis ver lo imprescindible para disparar con unity.








/// <summary>
/// Launcher.
/// 
/// 3/2/2013
/// Steve Peters
/// Game Developers Guild - Miami, FL
/// 
/// Allows us to launch projectiles at a wall. It preinstantiates and stores the projectiles in a 
/// stack to improve performance
/// </summary>
using UnityEngine;
using System.Collections;

public class Launcher : MonoBehaviour
{
    
    public Rigidbody projectile;
    public Rigidbody explosiveProjectile;
    public float launchspeed = 50;
    public bool useExplodingProjectiles = false;
    
    private float _LaunchDelayTime = 0.0f;
    
    public int stackSize = 60;          
    public Transform launchHole1;
    public Transform launchHole2;
    
    private Stack _Projectiles;
    private Stack _ExplosiveProjectiles;
    private Transform _myTransform;
    
    // Use this for initialization
    void Start ()
    {
        _myTransform = transform;
        _Projectiles = new Stack();
        if(useExplodingProjectiles)
        {
        _ExplosiveProjectiles = new Stack();
        }

        for(int i = 0i <  stackSizei++)
        {
            Rigidbody tr = Instantiate (projectile_myTransform.position_myTransform.rotationas Rigidbody;
            PushProjectile(tr);

            if(useExplodingProjectiles)
            {
            Rigidbody rr = Instantiate (explosiveProjectile_myTransform.position_myTransform.rotationas Rigidbody;
            PushExplosiveProjectile(rr);
            }
        }
    }
    
    // Update is called once per frame
    void Update ()
    {
        if(_Projectiles.Count > 0)
        {
            if(Time.time > _LaunchDelayTime)
        {   
            if (Input.GetButtonDown ("Fire1")) 
            {
                Rigidbody tr = PopProjectile();
                tr.gameObject.SetActive(true);
                tr.transform.position = launchHole1.position;
                tr.transform.rotation = launchHole1.rotation;
                tr.velocity = transform.TransformDirection (Vector3.forward * launchspeed);
                
                tr = PopProjectile();
                tr.gameObject.SetActive(true);
                tr.transform.position = launchHole2.position;
                tr.transform.rotation = launchHole2.rotation;
                tr.velocity = transform.TransformDirection (Vector3.forward * launchspeed);
                    
                _LaunchDelayTime = Time.time + 0.5f;
            }
        }   
        }

        if(useExplodingProjectiles)
        {
        if(_ExplosiveProjectiles.Count > 0)
        {
            if(Time.time > _LaunchDelayTime)
            {   
                if (Input.GetButtonDown ("Fire2")) 
                {
                    Rigidbody tr = PopExplosiveProjectile();
                    tr.gameObject.SetActive(true);
                    tr.transform.position = launchHole1.position;
                    tr.transform.rotation = launchHole1.rotation;
                    tr.velocity = transform.TransformDirection (Vector3.forward * launchspeed);
                    
                    tr = PopExplosiveProjectile();
                    tr.gameObject.SetActive(true);
                    tr.transform.position = launchHole2.position;
                    tr.transform.rotation = launchHole2.rotation;
                    tr.velocity = transform.TransformDirection (Vector3.forward * launchspeed);
                    
                    _LaunchDelayTime = Time.time + 0.5f;
                }
            }   
        }
        }
    }
    
    public void PushProjectile(Rigidbody x)
    {
        x.gameObject.SetActive(false);
        _Projectiles.Push(x);
    }
    
    public Rigidbody PopProjectile()
    {
        return (Rigidbody)_Projectiles.Pop();
    }

    public void PushExplosiveProjectile(Rigidbody x)
    {
        x.gameObject.SetActive(false);
        _ExplosiveProjectiles.Push(x);
    }
    
    public Rigidbody PopExplosiveProjectile()
    {
        return (Rigidbody)_ExplosiveProjectiles.Pop();
    }
}







using UnityEngine;
using System.Collections;
using UnityEngine;
public class BORRAMIBALA : MonoBehaviour {
    public float Destroy = 2f;
    // Use this for initialization
    void Start () {
        
    }
    
    
    
    
    void OnCollisionEnter (){
        
        Destroy (gameObject3.30f); 
        
        
        
        
        
    }
}












using UnityEngine;
using System.Collections;

public class TransformFunctions : MonoBehaviour
{
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;


    void Update ()
    {














        if (Input.GetKey(KeyCode.W))////funciona contantemente al apretar W mayusculas a de ser
        //if (Input.GetKeyDown(KeyCode.W))// funciona pasito a pasito
        //if(Input.GetKey(KeyCode.UpArrow))
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);


        if (Input.GetKey(KeyCode.S))////funciona contantemente al apretar W mayusculas a de ser
        //if(Input.GetKey(KeyCode.DownArrow))
            transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);


        if (Input.GetKey(KeyCode.A))////funciona contantemente al apretar W mayusculas a de ser
        //if(Input.GetKey(KeyCode.LeftArrow))
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.D))////funciona contantemente al apretar W mayusculas a de ser

        //if(Input.GetKey(KeyCode.RightArrow))
            transform.Rotate(Vector3.upturnSpeed * Time.deltaTime);
    }
}







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(sourcetargetGameObject.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();
        }
    }
}


EN ESTE VIDEO HACER DIPAROS CON BLENDER

🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻


🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻


EN ESTE VIDEO PASAR NIVEL CON UNITY
Y DESCARGATE EL TUTORIAL




PRESTAR ATENCION A LOS DOS ELEMENTOS PRINCIPALES PARA PASAR DE UN NIVEL A OTRO, A PARTIR DE ESTO PRACTICANDO Y HACIENDO SCRIPS NUEBOS SE PUEDEN HACER LAS COMBINACIONES Y NUEBOS NIVELES QUE SE QUIERAN,


ATENCION AL ELEMENTO  “CubePLAYER “ AL SCRIPT QUE TIENE PARA MOBERLO.......
ATENCION AL ELEMENTO  “CapsuleBUELTA NIVEL 0”  AL SCRIPT QUE TIENE PARA QUE CUANDO LO TOQUE NUESTRO  “CubePLAYER” CAMBIE A OTRO NIVEL.

IMPORTANTISIMO SI NO NO FUNCIONA EL TAC PONER DE NOMBRE EN TAC NUEVO  “CapsuleBUELTA NIVEL 0”
EL TAC LO E PUESTO CON EL MISMO NOMBRE “CapsuleBUELTA NIVEL 0”  Y EN EL SCRIPT EL MISMO NOMBRE “CapsuleBUELTA NIVEL 0”


SCRIPT PARA MOVER NUESTRO   “CubePLAYER “  EN C#
using UnityEngine;
using System.Collections;

public class TransformFunctions : MonoBehaviour
{
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;


    void Update ()
    {



        if (Input.GetKey(KeyCode.W))////funciona contantemente al apretar W mayusculas a de ser
        //if (Input.GetKeyDown(KeyCode.W))// funciona pasito a pasito
        //if(Input.GetKey(KeyCode.UpArrow))
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);


        if (Input.GetKey(KeyCode.S))////funciona contantemente al apretar W mayusculas a de ser
        //if(Input.GetKey(KeyCode.DownArrow))
            transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);


        if (Input.GetKey(KeyCode.A))////funciona contantemente al apretar W mayusculas a de ser
        //if(Input.GetKey(KeyCode.LeftArrow))
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.D))////funciona contantemente al apretar W mayusculas a de ser

        //if(Input.GetKey(KeyCode.RightArrow))
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
    }
}





ESCRIPT PARA NUESTRO “CapsuleBUELTA NIVEL 0”

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PASARNIVELCERO : MonoBehaviour {



        //public AudioSource tickSource;


        void Start () {

            //tickSource = GetComponent ();



        }

        void Update () {
        }

        void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        if (other.gameObject.CompareTag ("CapsuleBUELTA NIVEL 0")){
            //if (other.gameObject.CompareTag ("MATA")){
    transform.Rotate (new Vector3 (0 * Time.deltaTime, 91, 90), Space.Self);///////ESTO LO CONGELOOOO

                //tickSource.Play ();
Application.LoadLevel (0);


            }}

    }

    //}




C#


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PASARNIVEL : MonoBehaviour {



        //public AudioSource tickSource;


        void Start () {

            //tickSource = GetComponent ();



        }

        void Update () {
        }

        void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        if (other.gameObject.CompareTag ("SpherePUERTA ENTRAS AL OTRO NIVEL")){
            //if (other.gameObject.CompareTag ("MATA")){
    transform.Rotate (new Vector3 (0 * Time.deltaTime9190), Space.Self);///////ESTO LO CONGELOOOO

                //tickSource.Play ();
Application.LoadLevel (1);


            }}

    }

    //}





PROYECTO JUEGO DE DISPAROS, JUEGA, PRUEBALO, MIRA MIS COMENTARIOS Y MIS DIFICULTADES


PROYECTO JUEGO DE DISPAROS, JUEGA CON EL, MIRA MIS COMENTARIOS Y MIS DIFICULTADES



script de giro de un gameObject
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class girabaile : MonoBehaviour {

        // Use this for initialization
        void Start () {


            //transform.rotation = Quaternion.Euler (0,45, 0);
        }





        // Update is called once per frame
        void Update () {
            // Es la rotacion de Angulos de Euler en grados.
            transform.Rotate (new Vector3 (0 * Time.deltaTime10), Space.Self);


        }
    }

script del disparador
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class plumaMonoBehaviour {


//public GameObject Sphere;
    // Use this for initialization




    public Rigidbody Sphere;
    public float velocidad = 80f;
    void disparador () {
        Rigidbody SphereClon = (RigidbodyInstantiate (Spheretransform.positiontransform.rotation);
        SphereClon.velocity = transform.up * velocidad;




    //void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {




            //  void Update () {
        }

        void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        //if (other.gameObject.CompareTag ("pepe")){
            if (other.gameObject.CompareTag ("pollo")){








    //if (Input.GetKey (KeyCode.Space)) {
//Instantiate (Sphere);




disparador ();///////////////////////////imbento yo








    }}
    }

No hay comentarios:

Publicar un comentario