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
}
}}
}