¿ Qué han Hecho ?
Se crearon texturas propias, de prueba por el momento, se arreglo un problema en la generación de mapa, y se creo un script para el movimiento de la cámara usando el teclado.
¿ Qué se va a hacer ?
Continuar con el Backlog, desarrollando la estética del juego como los sprites y demás acorde a la historia planteada. y en cuanto a programación, se espera empezar con el sistema de generación de oleadas.
¿ Qué dificultades presenta ?
Realizar los ajustes pertinentes respecto a logo y al nombre de la empresa.
Movimiento de Camara.
CameraMovement Script.
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMovement : MonoBehaviour {
[SerializeField]
private float cameraSpeed = 0;
private float xMax;
private float yMin;
// Use this for initialization
void Start () {
}
// Update is called once per frame
private void Update () {
GetInput();
}
private void GetInput()
{
if (Input.GetKey(KeyCode.W))
{
transform.Translate(Vector3.up * cameraSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))
{
transform.Translate(Vector3.left * cameraSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S))
{
transform.Translate(Vector3.down * cameraSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D))
{
transform.Translate(Vector3.right * cameraSpeed * Time.deltaTime);
}
transform.position = new Vector3(Mathf.Clamp(transform.position.x, 0, xMax), Mathf.Clamp(transform.position.y, yMin, 0),-10);
}
public void SetLimits(Vector3 maxTile)
{
Vector3 wp = Camera.main.ViewportToWorldPoint(new Vector3(1, 0));
xMax = maxTile.x - wp.x;
yMin = maxTile.y - wp.y;
}
}
LevelManager Script.
Code: Select all
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class LevelManager : MonoBehaviour {
[SerializeField]
private GameObject[] tilePrefabs;
[SerializeField]
private CameraMovement cameraMovement;
public float TileSize
{
get {return tilePrefabs[0].GetComponent<SpriteRenderer>().sprite.bounds.size.x; }
}
// Use this for initialization
void Start () {
CreateLevel();
}
// Update is called once per frame
void Update () {
}
private void CreateLevel()
{
string[] mapData = ReadLevelText();
/*
string[] mapData = new string[]
{
"0000","1111","2222","3333","4444","5555"
};
*/
int mapXSize = mapData[0].ToCharArray().Length;
int mapYSize = mapData.Length;
Vector3 maxTile = Vector3.zero;
//float tileSize = tile.GetComponent<SpriteRenderer>().sprite.bounds.size.x;
Vector3 worldStart = Camera.main.ScreenToWorldPoint(new Vector3(0, Screen.height));
for(int y =0; y < mapYSize; y++)
{
char[] newTiles = mapData[y].ToCharArray();
for (int x = 0; x < mapXSize; x++)
{
maxTile = PlaceTile(newTiles[x].ToString(),x,y, worldStart);
}
}
cameraMovement.SetLimits(new Vector3(maxTile.x +TileSize, maxTile.y -TileSize));
}
private Vector3 PlaceTile(string tileType, int x, int y, Vector3 worldStart)
{
int tileIndex = int.Parse(tileType);
GameObject newTile = Instantiate(tilePrefabs[tileIndex]);
newTile.transform.position = new Vector3(worldStart.x + (TileSize * x), worldStart.y - (TileSize * y), 0);
return newTile.transform.position;
}
private string[] ReadLevelText()
{
TextAsset bindData = Resources.Load("Level") as TextAsset;
string data = bindData.text.Replace(Environment.NewLine, string.Empty);
return data.Split('-');
}
}