Mi nuevo videojuego “ATAKEAEREO”

 


Mi nuevo videojuego “ATAKEAEREO”


Estoy desarrollando un nuevo videojuego en 2dimensiones para completar a 100 mi cantidad de videojuegos subidos a https://paco415.gamejolt.io-----------https://gamejolt.com/--------------



En realidad esta echo en 3d , pero le quiero dar aspecto de 2d, ahora estoy recordando viejos videojuegos, y estoy currandome este , voy a comentar algunos aspectos del videojuego que son clásicos en prácticamente todos ellos, adiá de hoy, 06-05-2021 aun no e subido lo que veis en el video, pero lo subiré muy pronto, bueno al grano, lo que quería explicar.


Una nave tiene que atravesar una zona, y encuentra peligros, chocarse con elementos ,y elementos que salen disparados, y si la tocan, la dañan perdiendo vidas , asu vez la nave, tiene una bola debajo, que al tocar otras volás, que consigue al disparar a otros elementos, va poco a poco sumando un contador de puntos, cuando llegue a una cantidad concreta de puntos pues saldrá un pantallazo de videojuego ganado,

Asta ahora estoy estudiándome los gráficos, pero como lo que mas me interesa es la jugavilidad y la programación del videojuego acabare descargándolos desde los recursos gratuitos que ofrece Unity.


La nave tiene 10 vidas los videojuegos suelen poner 3 yo e puesto 10 y para conseguir el efecto e tenido que hacer ingeniármelas con mecánicas de gravedad de unity a parte de lo mínimo que se de programación.


Pongo imagen:





Son 10 imágenes de la nave a la derecha de la pantalla, pero para activar la desaparición una auná de estas en pantalla utilizo unos cubos que van cayendo .



Pongo imagen:




Todo parte de 10 cubos que están en la nave que manejamos.


Pongo imagen:



Cuando no se sabe apenas programar hay que buscar soluciones, yo jugando con los gameobjects o elementos que salen en las imágenes que e puesto anteriormente y utilizando los escripts en C# que me se manejar, e conseguido hacer que la nave valla perdiendo 10 vidas de una en una y que al llegar a la ultima se rinicie el videojuego otra vez…..Los escripts son los siguientes


ActivateTrigger...que reemplaza por colisión unos gameobjects por otros…...me cuesta de explicarlo , pero ago como una cadena de piezas o situaciones que provocan que se borre en pantalla cada vida y al final se reinicie el videojuego….lo explico mejor debajo del 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(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();
}
}
}




---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

En las siguientes imágenes podéis ver unos cubos que están unidos a los de la nave mediante este escript de arriba , funciona así.



Mi nave tiene 10 cubos cada uno al chocar con algo produce mediante el script que se borre una imagen de vida de la pantalla a su vez desaparece un cubo de la pila que están aparte del videojuego que no se ven mientras se juega…. Los de en medio están congelados en el aire, y el de enzima del todo tiene gravedad,,,,al irse borrando cualquiera de ellos el de encima del todo va cayendo y cuando toca al de debajo del todo del final este hace un cambio de gameobject que con tiene el script de reinicio de nivel este que pongo a continuación.











using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;/// <summary>
/// ////////////////////////7777777777777777777777777puestoyo ahoraaaaaaaaa sin esto no ba
/// </summary>
public class reiniciojuegoacero : MonoBehaviour {



public Text contador1;
public Text fin1;
private float tiempo = 1f;
// Use this for initialization
void Start () {
contador1.text = " " + tiempo;
fin1.enabled = false;




}

// Update is called once per frame
void Update ()
{
tiempo -= Time.deltaTime;
contador1.text = " " + tiempo.ToString ("f0");
if (tiempo <= 0) {
contador1.text = "0";
fin1.enabled = true;



{




Destroy (gameObject, 0.0f);

{

//Application.LoadLevel (1); ESTE ES EL ORIGINALLLLLLL

Application.LoadLevel (0);


}
}
}
}

}

-------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------

script que al acumular mas de 20 puntos o items da paso a pantalla de videojuego ganado

-------------------------------------------------------------------------------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SUMA21PASANIVELFINAL : MonoBehaviour {


        // Create public variables for player speed, and for the Text UI game objects
        public float speed;
        public Text countText;
        public Text winText;

        // Create private references to the rigidbody component on the player, and the count of pick up objects picked up so far
        private Rigidbody rb;
        private int count;/// <summary>



        // At the start of the game..
        void Start ()
        {


            // Assign the Rigidbody component to our private rb variable
            rb = GetComponent<Rigidbody>();

            // Set the count to zero 
            count = 0;

            // Run the SetCountText function to update the UI (see below)
            SetCountText ();

            // Set the text property of our Win Text UI to an empty string, making the 'You Win' (game over message) blank
            winText.text = "";
        }


        void OnTriggerEnter(Collider other) 
        {


            if (other.gameObject.CompareTag ("balaamericano"))



            {
                // Make the other game object (the pick up) inactive, to make it disappear
                other.gameObject.SetActive (false);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                // Add one to the score variable 'count'
                count = count + 1;


                SetCountText ();
            }
        }

        // Create a standalone function that can update the 'countText' UI and check if the required amount to win has been achieved
        void SetCountText()
        {


            countText.text = "ITEMS: " + count.ToString ();
            // Check if our 'count' is equal to or exceeded 12
            if (count >= 19) 
                //if (count >= 99) 
            {
                // Set the text value of our 'winText'
                winText.text = "JUEGO COMPLETADO";

                //    Destroy (gameObject, 1.2f); 

                /////Application.LoadLevel (5);/////ORIGINALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
                Application.LoadLevel (1);
            }
        }
    }



No hay comentarios:

Publicar un comentario