Day: March 10, 2021

Parte2 – o meu projeto (aprender)

o GameDesign deste projeto:
a experiência do jogador ( player experience ) : agilidade
a mecânica do jogo ( core mechanic ) : movimentos, e de evitar obstáculos
o modo continuo do jogo ( game loop ): ir de a para b

coisas interessantes:
a função Time.deltaTime
usar o cinemachine (para termos acesso a diferentes camaras) +infos: LINK
box colider (lidar com as colisões)
rigidbody (vai permitir trabalhar as colisões, lidar com problemas de rotação, através de congelar (freeze nos constrains)
cores +infos: LINK
GameObject.GetComponent + infos: LINK
Time.time +infos: LINK
Tags +infos: LINK
Transform +infos: LINK

algum código:

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

public class ColisaoMuros : MonoBehaviour
{
    private void OnCollisionEnter(Collision other) 
    {
        //Debug.Log("colisao com um muro");
        //Collision, tipo de variavel
        //other, quem colidiu comigo
        //OnCollisionEnter, quando "entra" na colisão
        //se colidirem contigo muda de cor
        //GetComponent<MeshRenderer>().material.color = Color.grey;

        //2) a colisão só deve acontecer se for com o objecto do jogador
        if(other.gameObject.tag == "Player"){
            GetComponent<MeshRenderer>().material.color = Color.grey;
            //mudar a tag
            gameObject.tag = "colisao";
        }
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Mover : MonoBehaviour
{
 //para ficar disponivel no inspctor usamos o [SerializeField] 
    //[SerializeField] float andaX = 0.0f;
    //[SerializeField] float andaY = 0.01f;
    //[SerializeField] float andaZ = 0.0f;
    // Start is called before the first frame update
    float andaY = 0.0f;
    [SerializeField]float movimentoVelocidade = 6.0f;
    
    void Start()
    {
        Debug.Log("parte 2 - inicio do jogo");
        ImprimirInstrucoes();
        //para mover
    }

    // Update is called once per frame
    void Update()
    {
        MoverOJogador();
    }

    void ImprimirInstrucoes(){
        Debug.Log("Bem vindo ao jogo");
        Debug.Log("Move o jogador com as setas ou WSAD");
        Debug.Log("Não vás contras os muros..");
    }
    void MoverOJogador(){
        float andaX = Input.GetAxis("Horizontal")*Time.deltaTime*movimentoVelocidade;
        float andaZ = Input.GetAxis("Vertical")*Time.deltaTime*movimentoVelocidade;
        transform.Translate(andaX, andaY, andaZ);
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Pontuacao : MonoBehaviour
{
    int pontuacao = 0;
    private void OnCollisionEnter(Collision other) {

        if(other.gameObject.tag != "colisao"){
            pontuacao=pontuacao+1;
            Debug.Log("pontos: "+pontuacao);
        }
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Queda : MonoBehaviour
{
    [SerializeField] float TempoACorrer = 3.0f;
    MeshRenderer rendererizacao;
    Rigidbody corpoDoMuro;
    void Start() {
        //esconder a mesh do objeto
        //GetComponent<MeshRenderer>().enabled = false;
        rendererizacao = GetComponent<MeshRenderer>();
        rendererizacao.enabled = false;

        corpoDoMuro = GetComponent<Rigidbody>();
        corpoDoMuro.useGravity = false;
    }
    void Update()
    {
        //Time.time, o tempo que passou desde o inicio de play no jogo
        //Debug.Log(Time.time);
        if(Time.time > TempoACorrer){
            //Debug.Log("ja passaram 3 segundos");
            rendererizacao.enabled = true;
            corpoDoMuro.useGravity = true;
        }
    }
}
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Roda : MonoBehaviour
{

[SerializeField] float rodaX = 0.0f;
[SerializeField] float rodaY = 0.50f;
[SerializeField] float rodaZ = 0.0f;

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(rodaX,rodaY,rodaZ);
    }
}
Tags : , ,

Os melhores jogos de RTS (para a PC Gamer)

Os editores da revista PC Gamer, decidiram apresentar de forma algo complexa uma série de nomes de jogos de RTS que eles classificam como sendo os melhores de sempre.. bem, de sempre é algo limitado já que pelo que percebi eles olham muito para os tempos modernos esquecendo algumas das relíquias que saíram e que tiveram o seu tempo e espaço, bem como glória (por exemplo onde é que está o Settlers?)

Da tal lista constam os seguintes jogos:
Crusader Kings 3
Total War: Three Kingdoms
Total War: Warhammer 2
Europa Universalis 4
Civilization 6
Sins of a Solar Empire
Stellaris
Endless Legend
Alpha Centauri
Age of Wonders: Planetfall
Iron Harvest
Battlefleet Gothic: Armada 2
Northgard
Homeworld
Command & Conquer: Red Alert 2
Homeworld: Deserts of Kharak
Supreme Commander
StarCraft 2
Warcraft 3
Company of Heroes
Rise of Nations
Warhammer 40,000: Dawn of War 2
Battletech
Into the Breach
XCOM 2
Invisible Inc.
DEFCON
Unity of Command 2
Hearts of Iron 4
Steel Division: Normandy 44
Total War: Warhammer 3
Homeworld 3
Humankind
Third Age: Total War
XCOM: Long War
Crusader Kings 2: A Game of Thrones

Não concordo com ela.. faltam aqui coisas e não sei quais é que foram os critérios para a elaboração da mesma, mas acho que um deles foi o de serem jogos que ainda se jogam!

+infos(oficial): LINK

Tags : ,

LDtk , 2D level editor

Encontrei uma ferramenta gratuita que permite editar níveis no formato de 2D. Parece ser bastante simples e intuitiva, e tem como formato de saída diversas linguagens.

De acordo com o autor: “My goal is to provide a level editor that has all the important core features and to do them right, with a modern user interface/experience.”

+infos(oficial): https://ldtk.io/