Flas galaxian, avances importantes en disparos y puertas automaticas, unity.

https://gamejolt.com/games/flas_galaxian/505385
IR EVITANDO ENEMIGOS Y DESTRULLENDOLOS Y POR SCRIPT DE TIME QUE APAREZCA UNA PUERTA POR DONDE SE ACABA EL JUEGO, TAMBIEN POR COLISION UN NUEVA ESCENA Y YO CAIGO MUERTO POR TIEMPO NUEBA ESCENA CARGAR PRINCIPIO DE JUEGO,



PONER BOTELLASS DE OXIGINO A PROTA HACER MONTRUO QUE ME PERSIGUE Y ME DISPARA ANIMACION REPETITIBA DE ANGULO HACIA BAJANDO.
ES IR PULIENDO Y PULIENDO Y AJUSTANDO.......................................................OJO LAS LUCES QUITAR LA MALLORIA.....



EL JUEGO TERMINA CUANDO BAJA EL COHETE SUBE A EL I REGRESA A MARTE

OJO ENEMIGOS DISPARAN Y SE ABATEN ELLOS MISMOS QUIZA LO PUEDA CORREGIR CON LOS DISPAROS AUTOMATICOS ALEATORIOS Y CON UN C # DE PERSONALIZAR LA DESTRUCCION DE LA BALA DE LOS ENEMIGOS QUE ME PERSIGEN, LOS PASILLOS TIENEN TRABAJO TIENE QUE ESTAR TODO MUY BIEN ENCAJADO Y EL MES DEL TERRENO DE VIAS DE PERSECUCION A 2.5 PARECE IR BIEN








SCRIPT C# PUERTAS ABRIENDOSE, UNA FORMA........EJEMPLO..


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

public class puertacorrederarreves : MonoBehaviour {


    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame


    //public int Rotador;
    void Update () {  }

void OnTriggerEnter(Collider other) {
    //void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        //if (other.gameObject.CompareTag ("ogri2")){
            if (other.gameObject.CompareTag ("molonrobott")){



            //}
      //var rot = transform.rotation;
            //rot.z += Time.deltaTime * 20;
           // transform.rotation = rot;

    transform.position += transform.right * -61.02f * Time.deltaTime; }

    }
    }
//}






OTRO EJEMPLO EN C#-----ABRIR UNA PUERTA...

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

public class muebepuerta : MonoBehaviour {

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame


    //public int Rotador;
    void Update () {  }

void OnTriggerEnter(Collider other) {
    //void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        //if (other.gameObject.CompareTag ("ogri2")){
            if (other.gameObject.CompareTag ("molonrobott")){



            //}
      var rot = transform.rotation;
            rot.z += Time.deltaTime * 35;
            transform.rotation = rot;


//transform.Rotate(new Vector3 (1.1f, 10.0f, 1.10f) * TimedeltaTime);

//transform.Rotate (new Vector3 (9999220 * Time.deltaTime, 0, 0), Space.Self);///////este de momento
//transform.rotation = Quaternion.
//Lerp
 //(transform.rotation, Quaternion.Euler (10, Rotador, 0), Time.deltaTime * 11);




        //transform.position += transform.right *91.02f * Time.deltaTime; }
    //transform.position += transform.up *-4.02f * Time.deltaTime; }
//transform.Rotate (new Vector3 (3333 * Time.deltaTime, 10, 0), Space.Self);

    }
    }
}


















ActivateTriger c#.......esta parte la ire explicando mas adelante...aqui hay que manipular la animacion que se activa con este escript....avajo unas imagenes y el script.....





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 , estoy estudiando y trabajando la IA de mi juego https://gamejolt.com/games/flas_galaxian/505385
Estoy haciendo pruebas con las aperturas de las puertas y
la persecución de los enemigos, me encuentro con problemas de que el enemigo al chocar con la puerta en lugar de abrirla se destruye a así mismo, voy jugando con los triggers y con los scripts de c# en tema colisiones y el tag de cada elemento, no tengo ninguna prisa repito secuencias del juego cientos de veces y haciendo pruebas constantemente para acercarme a lo que quiero conseguir.




Aquí con las puertas en estos scrpts intento personalizar la apertura según choque con ellas un personaje u otro del videojuego.





https://gamejolt.com/games/flas_galaxian/505385 

 c# abrir puertas por tag.

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

public class abresolomalopuertamas : MonoBehaviour {


    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame


    //public int Rotador;
    void Update () {  }

void OnTriggerEnter(Collider other) {
    //void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        //if (other.gameObject.CompareTag ("ogri2")){
            //if (other.gameObject.CompareTag ("molonrobott")){
                if (other.gameObject.CompareTag ("malopuerta")){



            //}
      //var rot = transform.rotation;
            //rot.z += Time.deltaTime * 20;
           // transform.rotation = rot;

    transform.position += transform.right * 361.02f * Time.deltaTime; }

    }
    }
//}
c# abrir puertas por tag.

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

public class puertacorrederarreves : MonoBehaviour {


    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame


    //public int Rotador;
    void Update () {  }

void OnTriggerEnter(Collider other) {
    //void OnTriggerEnter(Collider other) {
            //if (other.gameObject.CompareTag ("avismo")){
        //if (other.gameObject.CompareTag ("ogri2")){
            if (other.gameObject.CompareTag ("molonrobott")){
                //if (other.gameObject.CompareTag ("malopuerta")){



            //}
      //var rot = transform.rotation;
            //rot.z += Time.deltaTime * 20;
           // transform.rotation = rot;

    transform.position += transform.right * -161.02f * Time.deltaTime; }

    }
    }
//}
 

No hay comentarios:

Publicar un comentario