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