28/01/2019
26/01/2019
Consegui completar mais da metade dos problemas.
Agora o personagem sobe em escadas, arremessa objetos, salva num checkpoint e fica temporariamente invencível. Além disso, os monstros agora também tem vida.
Porém há problemas que precisam ser solucionados o quanto antes:
- Ao ignorar colisão quando sofrem dano ou morre, isso se aplica a todos os slimes inimigos, permitindo que o personagem se mova entre eles sem sofrer dano. É preciso que a colisão seja ignorada apenas entre o objeto atingido e o personagem.
- A velocidade de queda está afetando o movimento do personagem na escada. Não consigo deixá-lo inerte quando ele cai na escada.
Agora o personagem sobe em escadas, arremessa objetos, salva num checkpoint e fica temporariamente invencível. Além disso, os monstros agora também tem vida.
Porém há problemas que precisam ser solucionados o quanto antes:
- Ao ignorar colisão quando sofrem dano ou morre, isso se aplica a todos os slimes inimigos, permitindo que o personagem se mova entre eles sem sofrer dano. É preciso que a colisão seja ignorada apenas entre o objeto atingido e o personagem.
- A velocidade de queda está afetando o movimento do personagem na escada. Não consigo deixá-lo inerte quando ele cai na escada.
25/01/2019
Atualização
Não consegui upar o vídeo de ontem...
Mas, enfim. Corrigi metade dos problemas listados no último post. Faltam apenas:
- Criar boss da fase
- Subir e descer escadas
- Criar checkpoint e save
A ação do throw foi a que deu mais trabalho depois do jump, e confesso que me desmotivou muito até que eu corrigisse. Decidi dar um tempo no projeto hoje. Amanhã devo tentar corrigir os problemas da lista acima.
Mas, enfim. Corrigi metade dos problemas listados no último post. Faltam apenas:
- Criar boss da fase
- Subir e descer escadas
- Criar checkpoint e save
A ação do throw foi a que deu mais trabalho depois do jump, e confesso que me desmotivou muito até que eu corrigisse. Decidi dar um tempo no projeto hoje. Amanhã devo tentar corrigir os problemas da lista acima.
23/01/2019
Falta corrigir algumas coisas:
- "Freezar" a tela na animação de morte
- Bloquear o andar quando sofre dano
- Arremessar objeto após a animação de throw
- Objeto arremessado tem que colidir com o meio
- Personagem grudado no edge da plataforma
- Criar invencibilidade temporária
- Criar boss da fase
- Adicionar vida e AI aos inimigos
- Adicionar tela de Press Start e reiniciar o jogo quando der game over
- Criar checkpoint
18/01/2019
15/01/2019
Script C# do personagem (com anti-colisões)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float maxSpeed = 10f;
public float forcaPulo = 100;
bool grounded = false;
bool walld = false;
public Transform groundCheck;
public Transform wallCheck;
float groundRadius = 0.2f;
float wallRadius = 0.2f;
public LayerMask whatIsGround;
public LayerMask whatIsWall;
bool doubleJump = false;
bool noAr = false;
Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
Rigidbody2D rigidbody = GetComponent<Rigidbody2D>();
float vSpeed = rigidbody.velocity.y;
float movimento = Input.GetAxis("Horizontal");
if (vSpeed != 0 && movimento != 0 && !grounded)
{
noAr = true;
}
if (grounded && vSpeed == 0.0)
{
GetComponent<Animator>().SetBool("jumping", false);
noAr = false;
}
if (!grounded)
{
GetComponent<Animator>().SetBool("walking", false);
anim.SetBool("Ground", false);
if (!grounded && Input.GetKeyDown(KeyCode.Space) && walld)
{
GetComponent<Animator>().SetBool("jumping", false);
anim.SetBool("Ground", false);
}
}
if (grounded && Input.GetKeyDown(KeyCode.Space))
{
anim.SetBool("Ground", false);
GetComponent<Animator>().SetBool("jumping", true);
if (!noAr)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, 150));
}
}
}
void FixedUpdate()
{
Rigidbody2D rigidbody = GetComponent<Rigidbody2D>();
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
walld = Physics2D.OverlapCircle(wallCheck.position, wallRadius, whatIsWall);
anim.SetBool("Wall", walld);
anim.SetBool("No Ar", noAr);
anim.SetFloat("vSpeed", rigidbody.velocity.y);
float move = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(move));
rigidbody.velocity = new Vector2(move * maxSpeed, rigidbody.velocity.y);
if (grounded)
{
doubleJump = false;
}
if (move < 0)
{
GetComponent<SpriteRenderer>().flipX = true;
}
else if (move > 0)
{
GetComponent<SpriteRenderer>().flipX = false;
}
}
}
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float maxSpeed = 10f;
public float forcaPulo = 100;
bool grounded = false;
bool walld = false;
public Transform groundCheck;
public Transform wallCheck;
float groundRadius = 0.2f;
float wallRadius = 0.2f;
public LayerMask whatIsGround;
public LayerMask whatIsWall;
bool doubleJump = false;
bool noAr = false;
Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
Rigidbody2D rigidbody = GetComponent<Rigidbody2D>();
float vSpeed = rigidbody.velocity.y;
float movimento = Input.GetAxis("Horizontal");
if (vSpeed != 0 && movimento != 0 && !grounded)
{
noAr = true;
}
if (grounded && vSpeed == 0.0)
{
GetComponent<Animator>().SetBool("jumping", false);
noAr = false;
}
if (!grounded)
{
GetComponent<Animator>().SetBool("walking", false);
anim.SetBool("Ground", false);
if (!grounded && Input.GetKeyDown(KeyCode.Space) && walld)
{
GetComponent<Animator>().SetBool("jumping", false);
anim.SetBool("Ground", false);
}
}
if (grounded && Input.GetKeyDown(KeyCode.Space))
{
anim.SetBool("Ground", false);
GetComponent<Animator>().SetBool("jumping", true);
if (!noAr)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, 150));
}
}
}
void FixedUpdate()
{
Rigidbody2D rigidbody = GetComponent<Rigidbody2D>();
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
walld = Physics2D.OverlapCircle(wallCheck.position, wallRadius, whatIsWall);
anim.SetBool("Wall", walld);
anim.SetBool("No Ar", noAr);
anim.SetFloat("vSpeed", rigidbody.velocity.y);
float move = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(move));
rigidbody.velocity = new Vector2(move * maxSpeed, rigidbody.velocity.y);
if (grounded)
{
doubleJump = false;
}
if (move < 0)
{
GetComponent<SpriteRenderer>().flipX = true;
}
else if (move > 0)
{
GetComponent<SpriteRenderer>().flipX = false;
}
}
}
14/01/2019
13/01/2019
Relatório
Adicionados novos efeitos de pulo, caminhar, arremessar e liberar energia.
Criação de um mapa prototípico, para ambiente de testes.
Adicionado vilão.
Iniciado codificação de scripts na linguagem C#.
Mais tarde posto vídeo ou fotos das cenas.
Criação de um mapa prototípico, para ambiente de testes.
Adicionado vilão.
Iniciado codificação de scripts na linguagem C#.
Mais tarde posto vídeo ou fotos das cenas.
Assinar:
Comentários (Atom)