Mostrando entradas con la etiqueta Sobre barras de vida de los personajes y disparos en persecuciones a la carta mediante C#;;. Mostrar todas las entradas
Mostrando entradas con la etiqueta Sobre barras de vida de los personajes y disparos en persecuciones a la carta mediante C#;;. Mostrar todas las entradas

martes, 28 de junio de 2022

Sobre barras de vida de los personajes y disparos en persecuciones a la carta mediante C#;

Otros temas que e aprendido hace muy poco y que voy practicando y comentando es el uso de barras de vida de todos los personajes y de disparos de enemigos pero al estar a cierta distancia de su objetivo no se ponen a atacar asta que no tienen la distancia deseada por el desarrollador del videojuego,

El script en c# que realiza esta tarea es muy corto y muy sencillo.






using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class DISPARATIRITO : 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///////////////////////////EL QUE VENGO USANDO

//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);

}



}



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

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

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

cuando se aplica el script aun gameobject en este caso puse un cubo como hijo en la cabeza de un enemigo, hay aparecen mediante el // 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;


5 casillas donde se arrastran y se ponen los gameobjects que se disparan las velocidades de disparos

las distancia donde empiezan a disparar y al elemento del juego hacia donde va dirigido el disparo, esto si se suma al personaje que por su cuenta va caminando hacia el enemigo suma interés al videojuego, jugar con estas posibilidades cuando se saben emplear hace el juego interesante, pero claro hay que currárselo un montonazo….

Bien sigo explicando este script….en el video se puede ver como un enemigo al llegar a cierta distancia del lobo empieza a dispararle proyectiles desde sus ojos...intento representar que le esta disparando clones de sus ojos (mal de ojo) una cosa por el estilo para ambientar el tema del juego con un aire algo macabro…..


 

Y en este siguiente video intento que se vea visualmente los elementos del script que se pueden manipular , 1-el objetivo donde van a parar los disparos-2 la distancia desde la que empieza a disparar al objetivo- 3 la velocidad del disparo fuerza – 4-el proyectil o elemento gameobject que se dispara.

Dentro de este tema hay otros factores como darle al proyectil esa raya roja que simula la trayectoria como si fuera un cometa, ponerle al proyectil a su vez una script para que se borre cada 5 u 8 segundos, ponerle algún efecto de sonido..etc etc...

 

El gameobject proyectil se arrastra el prefabricado a la casilla donde esta el script.

El objetivo el lobo se arrastra también a la casilla correspondiente donde esta el script.

El script se añade al cubo que es hijo de la cabeza del enemigo


El gameobject proyectil se arrastra el prefabricado a la casilla donde esta el script.

El objetivo el lobo se arrastra también a la casilla correspondiente donde esta el script.

El script se añade al cubo que es hijo de la cabeza del enemigo





 

Y maravilloso script c# para Unity que hace funcionar una barra de vida de un enemigo, que al menguar esta provoque un cambio en el enemigo de muerte por ejemplo…...

 

 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class lekitavestidoconbarradevidas : MonoBehaviour {


        public int damage;
        public int vidaEnemigo;
        public Slider BarraVidaEnemigo;





        //public Rigidbody cubo;/// pruebas

        public Rigidbody ENEMIGOSALTAEXPLOTADO;/// pruebas
    public Rigidbody ENEMIGOSALTAEXPLOTADO2;/// pruebasIMBENTADO POR MIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    //public Rigidbody ENEMIGOSALTAEXPLOTADO3;/// pruebasIMBENTADO POR MIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
        //public Rigidbody source;/// pruebas


        //public Rigidbody  targetGameObject;/// pruebas


        void Update () {

            BarraVidaEnemigo.value = vidaEnemigo;

        }


        void OnTriggerEnter(Collider other) {
            //    if (other.gameObject.CompareTag ("Player")){
            if (other.gameObject.CompareTag ("caca")){

                vidaEnemigo-=damage;

            //    if (vidaEnemigo <= 0) {///////////////////ORIGINAL
                if (vidaEnemigo <= 1) {
                    Destroy (this.gameObject);/////destruye funciona

                    //    Application.LoadLevel (0);




                    //Rigidbody p = Instantiate(cubo, transform.position, transform.rotation);////pruebassss
                    Rigidbody p = Instantiate(ENEMIGOSALTAEXPLOTADO, transform.position, transform.rotation);////pruebassss
                Rigidbody p2 = Instantiate(ENEMIGOSALTAEXPLOTADO2, transform.position, transform.rotation);////pruebassssIMBENTADOPOR MIIIIIIIIIII
            //    Rigidbody p3 = Instantiate(ENEMIGOSALTAEXPLOTADO2, transform.position, transform.rotation);////pruebassssIMBENTADOPOR MIIIIIIIIIII
                    // Instantiate(source, targetGameObject.transform.position,
                    //targetGameObject.transform.rotation);




                //    Application.LoadLevel (3);///cambia la escena donde quiero funciona


                }


            }}

    }


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

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

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

  using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class lekitavestidoconbarradevidas : MonoBehaviour {


        public int damage;
        public int vidaEnemigo;
        public Slider BarraVidaEnemigo;





        //public Rigidbody cubo;/// pruebas

        public Rigidbody ENEMIGOSALTAEXPLOTADO;/// pruebas
    public Rigidbody ENEMIGOSALTAEXPLOTADO2;/// pruebasIMBENTADO POR MIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
    //public Rigidbody ENEMIGOSALTAEXPLOTADO3;/// pruebasIMBENTADO POR MIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
        //public Rigidbody source;/// pruebas


        //public Rigidbody  targetGameObject;/// pruebas


        void Update () {

            BarraVidaEnemigo.value = vidaEnemigo;

        }


        void OnTriggerEnter(Collider other) {
            //    if (other.gameObject.CompareTag ("Player")){
            if (other.gameObject.CompareTag ("caca")){

                vidaEnemigo-=damage;

            //    if (vidaEnemigo <= 0) {///////////////////ORIGINAL
                if (vidaEnemigo <= 1) {
                    Destroy (this.gameObject);/////destruye funciona

                    //    Application.LoadLevel (0);




                    //Rigidbody p = Instantiate(cubo, transform.position, transform.rotation);////pruebassss
                    Rigidbody p = Instantiate(ENEMIGOSALTAEXPLOTADO, transform.position, transform.rotation);////pruebassss
                Rigidbody p2 = Instantiate(ENEMIGOSALTAEXPLOTADO2, transform.position, transform.rotation);////pruebassssIMBENTADOPOR MIIIIIIIIIII
            //    Rigidbody p3 = Instantiate(ENEMIGOSALTAEXPLOTADO2, transform.position, transform.rotation);////pruebassssIMBENTADOPOR MIIIIIIIIIII
                    // Instantiate(source, targetGameObject.transform.position,
                    //targetGameObject.transform.rotation);




                //    Application.LoadLevel (3);///cambia la escena donde quiero funciona


                }


            }}

    }

SLIDER CON UNITY......( EN CONSTRUCCION ...CONTINUARA......