(POSDATA...PASAR EL MOUSE SOBRE LAS LINEAS DE CODIGO ASI PODREIS LEERLAS POR CONTRASTE..DE COLORES Y COPIARLAS TAMBIEN APRETANDO EL BOTON IZQUIERDO..)
Mi nuevo proyecto con unity.
Estoy trabajando actualmente un juego de guerra, y me estoy inspirando en el de Medal of Honor,
Medal of Honor es una serie de videojuegos creada y producida por Steven Spielberg. La temática de la serie siempre ha estado basada en los combates de la Segunda Guerra Mundial, tema de culto para Spielberg .
Voy a ir explicando como estoy haciendo el videojuego los problemas que me voy encontrando y las soluciones que voy encontrando.
El argumento y guion del tema no lo cuento ….¡¡¡¡¡¡que me lo copiannnn!!!!!!!! ¡¡¡¡jajajajajajjajajajaj!!!!!!!.
Bueno esto ultimo es broma claro, solo escribire que es algo corto y concreto para poder terminarlo, un episodio mas bien una situación de guerra, al escapar el player un soldado americano, se gana el juego eso es todo el argumento que voy a contar asta ahora.
Lo que e aprendido aquí de forma novedosa, pondré el script en c# donde se ve el cambio, es hacer disparos con ráfaga tipo ametralladora pero no de forma mecánica sino directamente desde el script.
Concretamente, esta linea de código:
if (Input.GetButton ("Fire1")) ////ametralladora
// if (Input.GetButtonDown ("Fire1")) original tiro a tiro
if (Input.GetButton ("Fire1")) ////ametralladora--------al mantener pulsado sale constantemente disparos
// if (Input.GetButtonDown ("Fire1")) original tiro a tiro—-solo hace hace un disparo hay que pulsar la tecla una y otra vez es tiro a tiro sin rafaga.
/// <summary>
/// Launcher.
///
/// 3/2/2013
/// Steve Peters
/// Game Developers Guild - Miami, FL
///
/// Allows us to launch projectiles at a wall. It preinstantiates and stores the projectiles in a
/// stack to improve performance
/// </summary>
using UnityEngine;
using System.Collections;
public class Launcher : 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.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();
}
}
Asta ahora para hacer ráfagas utilizaba este método que me daba resultado pero es mecánico,
paso enlace del video donde veréis como lo hacia antes y en este juego hay partes que sigo utilizando este sistema.
Otra novedad aprendida con mi nuevo videojuego es la de combinar colisiones personalizadas por tag y las escenas del juego, cuando me disparan los enemigos y me alcanzan utilizo este escriptque me cambia a la escena donde muero y desde esta escena al presionar la tecla “o” buelbo a riniciar el juego.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class colisiontcambioportagdenivel : MonoBehaviour {
//public float distancePerSecond;//////IMBENTADO
//public float Destroy = 0.2f;
// Use this for initialization
void Start () {
}
//void OnCollisionEnter (){
void OnCollisionEnter (Collision collision)
{
//if (collision.gameObject.tag == "maloazul (4)") {
//Destroy (gameObject, 0.0f);
if (collision.gameObject.tag == "pomada") {
//Destroy (gameObject, 2.0f);
// transform.position = new Vector3 (198.301f, 20.316f, 136.023f);/////////nuebo mio
//transform.Translate (new Vector3 (198 * Time.deltaTime, 20, 136.2f), Space.Self);/////////////IMBENTADO
Application.LoadLevel (1);
}
}
}
--------------------------------------------------------------------------
-----------------------------------------------------------------------------
----------------------------------------------------------------------------
A las balas enemigas, las e nombrado con el tag “pomada”, sirve cualquier palabra que queramos ponerle…...El gameobjet de las balas enemigas se llama Sphere y de tag le puesto “pomada”, cuando me colisionan las Sphere enemigas me cambia la escena del videojuego...Application.LoadLevel (1);
y desde aquí donde seme ve muriendo, al presionar la tecla “o” reinicio el videojuego.
Pongo el script….todo esto siempre en c#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class reinicioalapretartecla : MonoBehaviour {
//public AudioSource tickSource;//////////////////////////nueboooooooo
//public AudioSource tickSource;
void Start () {
//tickSource = GetComponent<AudioSource> ();
//tickSource = GetComponent<AudioSource> ();///////////////////////////////////////////nuebooooooo
}
void Update ()
{
//tickSource.Play ();//////////////////////////////////////////////////nuevoooooooooooo
if (Input.GetKey(KeyCode.O))
//tickSource.Play ();
Application.LoadLevel (0);
}}
Tambien e mejorado el sonido de fondo del videojuego poniendo uno de sonidos de guerra generales, uno sola mente, antes ponía un sonido por cada elemento, claro se bloqueaba y se mezclaba todo ,,,,,un caos vamos. Ahora lo justo .
1-sonido de fondo de guerra disparos sirenas etc...pero solo uno.
2- sonido de muertes.
3- mis sonidos personales de disparos del player……
4- me faltara el fondo musical que no lo e puesto y que pienso componerlo yo mismo estilo jazz improvisando o como las antiguas películas de charlot que había uno con un piano tocando mientras daban la película…
Y el tema del juego me da pie y me funciona muy bien con animaciones gratuitas descargadas desde unity de las series
Raw Mocap Data
Animaciones de personajes deambulando por el terreno de diversas formas diferentes , procurare variar aquí todo lo que pueda,.
Luego esta el tema de la iluminación que pienso darle al videojuego un aire cálido de oscuridad y juego de luces.
Los personajes los e modelado yo y pintado yo con blender, el americano y al alemán, aquí me encontrado que al pintarlo con blender estaba muy contento con los colores y los tonos pero al pasarlo a unity no salían con la misma intensidad me salían muy flojos y apagados, ignoro el motivo,,,,pero ya lo estudiare y practicare ,,,no tengo prisa,,,voy haciendo aprendiendo y disfrutando un montón.
(continuara………………………………………………………………………….)
(POSDATA...PASAR EL MOUSE SOBRE LAS LINEAS DE CODIGO ASI PODREIS LEERLAS POR CONTRASTE..DE COLORES Y COPIARLAS TAMBIEN APRETANDO EL BOTON IZQUIERDO..)
No hay comentarios:
Publicar un comentario