jueves, 31 de marzo de 2022

¡¡¡Ayuda sobre este tema si alguien lee el blog y quiere echarme una manita!!;Cambios de escena mediante slider;

 

hola estoy estudiando con unity la forma de hacer dos barras de vida ,una para un player que dispara a un enemigo, y la otra barra de vida es del enemigo,( barra de vida slider en la jerga de unity).

Cuando disparo al enemigo su barra de vida va menguando.

Cuando me dispara el enemigo ami mi barra de mi vida va menguando.

Asta aquí todo bien.

Lo que quiero es que cuando mi barra de vida llegue a su fin haga un cambio de escena.

Cuando la barra de vida del enemigo llegue a su fin haga otro cambio de escena pero diferente, diferente escena me refiero.


Todo esto consigo hacerlo, pero no consigo que cada barra de vida al finalizar provoque su particular cambio de escena.

Mediante script de C# consigo realizar todo esto pero me falla lo del cambio de escena, siempre sale le misma aunque por script las diferencio.



Aquí la del player

   public void SentirDolor(int cantidad)
   {
      this.vidaActual -= cantidad;
      barraVida.value = this.vidaActual;

      if (vidaActual <= 0 )
      {
      Application.LoadLevel (1);////imbento yo


---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
Aquí la del enemigo.
   public void SentirDolor(int cantidad)
   {
      this.vidaActual -= cantidad;
      barraVida.value = this.vidaActual;

      if (vidaActual <= 0 )
      {
      Application.LoadLevel (2);////imbento yo






domingo, 27 de marzo de 2022

Script en C# para Unity que produce disparos de enemigo tipo rafaga, y se puede manipular los tiempos de disparo;

 


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

public class disparo : MonoBehaviour {

    public Transform player;

  //  public float range = 1f;
    //public float range = 4f;

 // MANIPULAR PARA CAMBIAR LAS VELOCIDADES DE DISPARO
    public float range = 0.04f;


    public float bulletImpulse = 0.1f;

    private bool onRange = false;

    public Rigidbody projectile;

    void Start()
    {


 

 
       // float rand = Random.Range(1.0f, 2.0f);/////ORIGINAL
        //float rand = Random.Range(0.04f, 2.0f);/////tambien funciona
        //float rand = Random.Range(0.04f, 0.5f);/////tambien funciona

 //ATENCION A ESTAS LINEAS DE ARRIBA, MANIPULANDOLAS SE CAMBIAS LOS TIEMPOS

DE DISPAROS A MAS LENTOS A MAS RAPIDOS Y SEGUIDOS

  // float rand = Random.Range(1.0f, 2.0f);/////ORIGINAL DISPARA LENTAMENTE


        float rand = Random.Range(0.04f, 0.08f);

/////tambien funcionaDISPARA RAPIDAMENTE




        InvokeRepeating("Shoot", 2, rand);//////ORIGINAL
    


    }

    void Shoot()
    {

        if (onRange)
        {

            Rigidbody bullet = (Rigidbody)Instantiate(projectile, transform.position + transform.forward, transform.rotation);
            bullet.AddForce(transform.forward * bulletImpulse, ForceMode.Impulse);

            Destroy(bullet.gameObject, 2);
        }


    }

    void Update()
    {

        onRange = Vector3.Distance(transform.position, player.position) < range;

        if (onRange)
            transform.LookAt(player);
    }


}

 

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

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

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

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

public class disparo : MonoBehaviour {

    public Transform player;

  //  public float range = 1f;
    //public float range = 4f;
    public float range = 0.04f;


    public float bulletImpulse = 0.1f;

    private bool onRange = false;

    public Rigidbody projectile;

    void Start()
    {
       // float rand = Random.Range(1.0f, 2.0f);/////ORIGINAL
        //float rand = Random.Range(0.04f, 2.0f);/////tambien funciona
        //float rand = Random.Range(0.04f, 0.5f);/////tambien funciona
        float rand = Random.Range(0.04f, 0.08f);/////tambien funciona

        InvokeRepeating("Shoot", 2, rand);//////ORIGINAL

    }

    void Shoot()
    {

        if (onRange)
        {

            Rigidbody bullet = (Rigidbody)Instantiate(projectile, transform.position + transform.forward, transform.rotation);
            bullet.AddForce(transform.forward * bulletImpulse, ForceMode.Impulse);

            Destroy(bullet.gameObject, 2);
        }


    }

    void Update()
    {

        onRange = Vector3.Distance(transform.position, player.position) < range;

        if (onRange)
            transform.LookAt(player);
    }


}

miércoles, 23 de marzo de 2022

Ejemplo de videojuego echo con unity, descargatelo directamente de mi blog;

descargatelo desde aqui cliquea aqui. 

 

¡MEGA me echa de menos! pues gracias Mega!!!!

aloja tus archibos en mega!!!!!!

¿Qué es un Mega y para qué sirve?
Mega es un servicio en la 'nube' similar a Dropbox o Google Drive que permite intercambiar libremente archivos de todo tipo (películas, libros, videojuegos, música, documentos personales, fotografías y un larguísimo etcétera) de una forma mucho más segura para los usuarios y, sobre todo, para la propia página

domingo, 20 de marzo de 2022

Videojuego de guerra de 2 personajes, prototipo, completo;

 



juego de guerra de 2 enemigos con barras de vida, completo, prototipo, de 10 minutos de juego.

war game of 2 enemies with life bars, complete, prototype, of 10 minutes of game.


 

sábado, 19 de marzo de 2022

Script de uso de un tipo de slider y video de modelaje de un casco militar con blender.;

 

Script de uso de un tipo de slider y video de modelaje de un casco militar con blender.

En estos días estoy practicando y estudiando el tema de los slider de unity, y estoy desarrollando un cortisimo videojuego de un soldado que ataca a otro con una ametralladora y este a su vez dispara al protagonista que manejamos el player, pongo aquí un video del modelaje de un casco de guerra echo en un momentito insertado en el personaje que manejamos.

 

 


 

 

 

 

También e aprendido hacer un slider (barra de vida)…. Que es un simple temporizador que al agotarse el tiempo y el player no destruir al enemigo activara el nivel u escena de game over.

Lo aprendí hacer viendo un tutorial de YouTube….pongo el script ...ea…. Para que no tengáis que escribirlo a mano vosotros……

 

 

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

public class Timertiempo : MonoBehaviour {

public Slider timerSlider;
public Text timerText;
public float gameTime;

private bool stopTimer;



// Use this for initialization
void Start () {
stopTimer = false;
timerSlider.maxValue = gameTime;
timerSlider.value = gameTime;

}

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

float time = gameTime - Time.time;

int minutes = Mathf.FloorToInt (time / 60);
int seconds = Mathf.FloorToInt (time - minutes * 60f);

string textTime = string.Format (" {0:0}:{1:0}", minutes, seconds);
if ( time <= 0)


{

stopTimer = true;



// Application.LoadLevel (1);/////imbento yo
Application.LoadLevel (2);/////imbento yo

}

if ( stopTimer == false )
{

timerText.text = textTime;
timerSlider.value = time;

}
}
}

https://www.youtube.com/watch?v=S12x7txHS1chttps://www.youtube.com/watch?v=S12x7txHS1c

en el enlace de arriba explicacion de como poner el script, no es mio el video, pero esta tambien explicado que e tenido que poner su enlace. En mi blog solo me interesa que se me entienda.

sábado, 12 de marzo de 2022

IV WORLD WAR ;



 

IV WORLD WAR ;


 

IV WORLD WAR


coloca la bandera en su sitio si puedes y ganas el videojuego


PLACE THE FLAG ON THE RED BASE OF THE BLUE POLE AND YOU WIN . W-A-S-D-MOUSE BUTTON!!!!! WORLD WAR IV put the flag in its place if you can and win the game






https://paco415.gamejolt.io/IV_WORLD


jueves, 10 de marzo de 2022

Scripts en C# Unity definitivos para disparar y para que te disparen los enemigos.-2-;

 script C# que tiene cada uno de los enemigos que persiguen al Player......

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

public class mepersigeelmalote : MonoBehaviour {

        Transform player;

        UnityEngine.AI.NavMeshAgent nav;


        void Awake ()
        {


            player = GameObject.FindGameObjectWithTag ("cano").transform;


            nav = GetComponent <UnityEngine.AI.NavMeshAgent> ();
        }


        void Update ()
        {
            
            nav.SetDestination (player.position);

        }
    }



En dos días e aprendido abrir puertas al pasar el player por una puerta, hay que ir ajustando para conseguir lo buscado,

he aprendido de chiripa a que los enemigos me disparen al acercarme a ellos, y al saber poner el script necesario para que me persigan por el escenario e conseguido al fin persecuciones de enemigos que me disparan,

he conseguido hacer una barra de vida que al llegar al final reinicia el juego…… todo esta aun algo verde pero con trabajo y constancia y paciencia haré un jueguecillo sencillo de matar enemigos y de perder vidas con la barra de vida, antes solo lo podía hacer por números en pantalla partiendo de por ejemplo 100 vidas iba perdiéndolas poco a poco cuando me atacaban enemigos descontando de 100 hacia 0…..pero una barra de vida tiene otra gracia que me servirá para hacer juegos muy pequeños pero que quiero intentar esmerarme con los gráficos ahora un player y un enemigo solamente con una barra de vida cada uno, la suya propia , creo seria un opción interesante, y da pie a currarse con mas interés los personajes ya que saldrían solo 2.


Parto de cero juego de pasillos y puertas de disparos, ir por pasillos abrir habitaciones y matar lo de dentro, poner lo aprendido de abrir puertas automáticas de tema disparos ráfagas, intentar personajes súper sencillos y animaciones de risa, puntuar e ir aumentando dificultad.


Intentar que me disparen al tocar yo elementos que salen de ellos mediante tag, al perder una vida volver a un punto de partida, sumar puntos al matar enemigos o al recoger su cadáver,


He arreglado 2 dificultades que tenia en un principio, la barra de vida llegaba al final y no ocurría nada no reiniciaba el juego por muerte del player.

La otra dificultad era que los personajes que me perseguían y me disparaban se mataban entre ellos si se ponían uno de tras del otro, y e logrado resolverlo…..iré ampliando y explicando como voy haciendo esto de momento pongo un video de lo realizado y un par de los scripts en C# que uso en el tema de los disparos.

https://videojuegosenlineaasaco4.blogspot.com/2022/03/scripts-en-c-unity-definitivos-para.html

domingo, 6 de marzo de 2022

Scripts en C# Unity definitivos para disparar y para que te disparen los enemigos.;

Este para que un enemigo dispare al player.

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

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

public class disparo : MonoBehaviour {

    public Transform player;

    public float range = 4f;
    public float bulletImpulse = 0.1f;

    private bool onRange = false;

    public Rigidbody projectile;

    void Start()
    {
        float rand = Random.Range(1.0f, 2.0f);
        InvokeRepeating("Shoot", 2, rand);
    }

    void Shoot()
    {

        if (onRange)
        {

            Rigidbody bullet = (Rigidbody)Instantiate(projectile, transform.position + transform.forward, transform.rotation);
            bullet.AddForce(transform.forward * bulletImpulse, ForceMode.Impulse);

            Destroy(bullet.gameObject, 2);
        }


    }

    void Update()
    {

        onRange = Vector3.Distance(transform.position, player.position) < range;

        if (onRange)
            transform.LookAt(player);
    }


}

 

 

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

Este para disparar el player 

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

 

  using UnityEngine;
using System.Collections;

public class Launcher2 : 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 = 0; i <  stackSize; i++)
        {
            Rigidbody tr = Instantiate (projectile, _myTransform.position, _myTransform.rotation) as Rigidbody;
            PushProjectile(tr);

            if(useExplodingProjectiles)
            {
                Rigidbody rr = Instantiate (explosiveProjectile, _myTransform.position, _myTransform.rotation) as Rigidbody;
                PushExplosiveProjectile(rr);
            }
        }
    }

    // Update is called once per frame
    void Update ()
    {
        if(_Projectiles.Count > 0)
        {
            if(Time.time > _LaunchDelayTime)
            {    






                //if (Input.GetKeyDown(KeyCode.Space))
                if (Input.GetKey (KeyCode.M)) /////////////////imbentadooooooooooooooooooooooooooooooooooooo
                //if (Input.GetButton ("Fire1")) ////ametralladora
                    //    if (Input.GetButtonDown ("Fire1")) original tiro a tiro




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

 

 

 Aqui enlace donde aprendi que enmigos  disparen a Player (protagonista de posible videojuego) hace años buscaba una solucion buena.

https://futbolstudiohistorietas.com/unity-parte-4-enemigos-disparan/

 

 

jueves, 3 de marzo de 2022

Como hacer una puerta giratoria con Unity sin programación.

 


Como hacer una puerta giratoria con unity sin programación.

Se hace un cubo y a partir de el se moldea estirándolo ...(todo esto desde Unity no es necesario blender)… asta darle forma rectangular y aplanada de una puerta bastante ancha para que quepan personajes al pasar por ella.

La puerta a de tener el Box Collider y el Rigidbody como se ve en la captura de pantalla.



súper sencillo los personajes al pasar hacen girar la puerta, fijarse en el detalle que provoca esto...Constraints y los Freeze Position y los Freeze Rotation desde Rigidbody...marcar los ejes x-y-z como se ve en la captura de pantalla, es lo que hace que la puerta no caiga al suelo o salga volando o cualquier historia...solo hace lo que tiene que hacer una puerta giratoria, girar cuando la empujan.

Para el cristal de la puerta para hacer ese efecto, también fijarse en la captura de pantalla ...UI/Unlit/Transparent.

La textura esta pintada con la herramienta gratuita GIMP 2.10.12 con un fondo transparente y guardada en formato PNG que es el que soporta las transparencias.