AJUDA PARA UM SISTEMA DE CHECKPOINT
2 participantes
Página 1 de 1
AJUDA PARA UM SISTEMA DE CHECKPOINT
Blz pessoal
estou tentando fazer um sistema de checkpoint baseado nesse script abaixo, só que não estou conseguindo de jeito nenhum.
queria que no lugar da cena a ser carregada tivesse como ele volta para um checkpoint, e como eu não tenho experiência com programação, eu estou apanhando.
ALGUEM PODE ME AJUDAR????
estou tentando fazer um sistema de checkpoint baseado nesse script abaixo, só que não estou conseguindo de jeito nenhum.
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PLAYER : MonoBehaviour
{
public GameObject AudioSource;
public static float HP = 100f;
public string Cena;
public Text textoUI;
public string TextoInformativo = "INFORMAÇÃO";
private void Start() => PLAYER.HP = 100f;
private void Update()
{
if ((double) PLAYER.HP <= 0.0)
SceneManager.LoadScene(this.Cena);
this.textoUI.text = this.TextoInformativo + (object) PLAYER.HP;
}
}
queria que no lugar da cena a ser carregada tivesse como ele volta para um checkpoint, e como eu não tenho experiência com programação, eu estou apanhando.
ALGUEM PODE ME AJUDAR????
Re: AJUDA PARA UM SISTEMA DE CHECKPOINT
Vamos lá, esse checkpont realmente é um local específico da cena q vc quer voltar? Literalmente um position? Se sim, é bem simples:
Farei os exemplos pensando num jogo 2D, mas vc pode aplicar a mesma lógica se for 3D:
1. Crie um script para ser o gerenciador do checkpoint:
2. Crie um script que salva a posição do checkpoint quando vc passar por ele (imagino um objeto com Trigger na cena):
3. O objeto de checkpint deve conter esse script acima inserido, e no Inspector vc preenche a posição x e y referente a esse checkpoint. Também deve conter um Collider2D com Trigger marcado.
4. Agora no script vem a modificação no seu script, ao invés de carregar uma cena nova, ele manda o personagem para aquela posição de check point:
Parto do princípio que o script acima está contido no player, caso não, precisa fazer uma referência ao player nesse script para setar a posição pra ele.
E é isso.
Caso queria que essa posição de checkpoint seja salva mesmo quando vc abre e fecha o jogo, vc pode usar o PlayerPrefs pra isso, mas se for o caso, eu posso modificar o script pra vc.
Farei os exemplos pensando num jogo 2D, mas vc pode aplicar a mesma lógica se for 3D:
1. Crie um script para ser o gerenciador do checkpoint:
- Código:
using UnityEngine;
public static class CheckPointManager
{
private static Vector2 _lastCheckPointPosition;
public static void SetCheckPointPosition(Vector2 newPosition) => _lastCheckPointPosition = newPosition;
public static Vector2 GetCheckPointPosition() => return _lastCheckPointPosition;
}
2. Crie um script que salva a posição do checkpoint quando vc passar por ele (imagino um objeto com Trigger na cena):
- Código:
using UnityEngine;
public class CheckPointTrigger : MonoBehaviour
{
[SerializeField] private Vector2 _checkPointPosition;
private void OnTriggerEnter2D(Collider2D collider)
{
if(collider.gameObject.tag != "Player") return;
CheckPointManager.SetCheckPointPosition(_checkPointPosition);
this.enabled = false;
}
}
3. O objeto de checkpint deve conter esse script acima inserido, e no Inspector vc preenche a posição x e y referente a esse checkpoint. Também deve conter um Collider2D com Trigger marcado.
4. Agora no script vem a modificação no seu script, ao invés de carregar uma cena nova, ele manda o personagem para aquela posição de check point:
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PLAYER : MonoBehaviour
{
public GameObject AudioSource;
public static float HP = 100f;
public string Cena;
public Text textoUI;
public string TextoInformativo = "INFORMAÇÃO";
private bool _checkPointIsDone = false;
private void Start() => PLAYER.HP = 100f;
private void Update()
{
if ((double) PLAYER.HP <= 0.0)
{
if(!checkPointIsDone)
{
Vector2 checkPointPos = CheckPointManager.GetCheckPointPosition();
this.transform.position = new Vector3(checkPointPos.x, checkPointPos.y, 0);
_checkPointIsDone = true;
}
this.textoUI.text = this.TextoInformativo + (object) PLAYER.HP;
}
}
}
Parto do princípio que o script acima está contido no player, caso não, precisa fazer uma referência ao player nesse script para setar a posição pra ele.
E é isso.
Caso queria que essa posição de checkpoint seja salva mesmo quando vc abre e fecha o jogo, vc pode usar o PlayerPrefs pra isso, mas se for o caso, eu posso modificar o script pra vc.
Re: AJUDA PARA UM SISTEMA DE CHECKPOINT
Show de bolaMayLeone escreveu:Vamos lá, esse checkpont realmente é um local específico da cena q vc quer voltar? Literalmente um position? Se sim, é bem simples:
Farei os exemplos pensando num jogo 2D, mas vc pode aplicar a mesma lógica se for 3D:
1. Crie um script para ser o gerenciador do checkpoint:
- Código:
using UnityEngine;
public static class CheckPointManager
{
private static Vector2 _lastCheckPointPosition;
public static void SetCheckPointPosition(Vector2 newPosition) => _lastCheckPointPosition = newPosition;
public static Vector2 GetCheckPointPosition() => return _lastCheckPointPosition;
}
2. Crie um script que salva a posição do checkpoint quando vc passar por ele (imagino um objeto com Trigger na cena):
- Código:
using UnityEngine;
public class CheckPointTrigger : MonoBehaviour
{
[SerializeField] private Vector2 _checkPointPosition;
private void OnTriggerEnter2D(Collider2D collider)
{
if(collider.gameObject.tag != "Player") return;
CheckPointManager.SetCheckPointPosition(_checkPointPosition);
this.enabled = false;
}
}
3. O objeto de checkpint deve conter esse script acima inserido, e no Inspector vc preenche a posição x e y referente a esse checkpoint. Também deve conter um Collider2D com Trigger marcado.
4. Agora no script vem a modificação no seu script, ao invés de carregar uma cena nova, ele manda o personagem para aquela posição de check point:
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PLAYER : MonoBehaviour
{
public GameObject AudioSource;
public static float HP = 100f;
public string Cena;
public Text textoUI;
public string TextoInformativo = "INFORMAÇÃO";
private bool _checkPointIsDone = false;
private void Start() => PLAYER.HP = 100f;
private void Update()
{
if ((double) PLAYER.HP <= 0.0)
{
if(!checkPointIsDone)
{
Vector2 checkPointPos = CheckPointManager.GetCheckPointPosition();
this.transform.position = new Vector3(checkPointPos.x, checkPointPos.y, 0);
_checkPointIsDone = true;
}
this.textoUI.text = this.TextoInformativo + (object) PLAYER.HP;
}
}
}
Parto do princípio que o script acima está contido no player, caso não, precisa fazer uma referência ao player nesse script para setar a posição pra ele.
E é isso.
Caso queria que essa posição de checkpoint seja salva mesmo quando vc abre e fecha o jogo, vc pode usar o PlayerPrefs pra isso, mas se for o caso, eu posso modificar o script pra vc.
muito abrigado! me ajudou de+.
Re: AJUDA PARA UM SISTEMA DE CHECKPOINT
[img][/img]MayLeone escreveu:Vamos lá, esse checkpont realmente é um local específico da cena q vc quer voltar? Literalmente um position? Se sim, é bem simples:
Farei os exemplos pensando num jogo 2D, mas vc pode aplicar a mesma lógica se for 3D:
1. Crie um script para ser o gerenciador do checkpoint:
- Código:
using UnityEngine;
public static class CheckPointManager
{
private static Vector2 _lastCheckPointPosition;
public static void SetCheckPointPosition(Vector2 newPosition) => _lastCheckPointPosition = newPosition;
public static Vector2 GetCheckPointPosition() => return _lastCheckPointPosition;
}
2. Crie um script que salva a posição do checkpoint quando vc passar por ele (imagino um objeto com Trigger na cena):
- Código:
using UnityEngine;
public class CheckPointTrigger : MonoBehaviour
{
[SerializeField] private Vector2 _checkPointPosition;
private void OnTriggerEnter2D(Collider2D collider)
{
if(collider.gameObject.tag != "Player") return;
CheckPointManager.SetCheckPointPosition(_checkPointPosition);
this.enabled = false;
}
}
3. O objeto de checkpint deve conter esse script acima inserido, e no Inspector vc preenche a posição x e y referente a esse checkpoint. Também deve conter um Collider2D com Trigger marcado.
4. Agora no script vem a modificação no seu script, ao invés de carregar uma cena nova, ele manda o personagem para aquela posição de check point:
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PLAYER : MonoBehaviour
{
public GameObject AudioSource;
public static float HP = 100f;
public string Cena;
public Text textoUI;
public string TextoInformativo = "INFORMAÇÃO";
private bool _checkPointIsDone = false;
private void Start() => PLAYER.HP = 100f;
private void Update()
{
if ((double) PLAYER.HP <= 0.0)
{
if(!checkPointIsDone)
{
Vector2 checkPointPos = CheckPointManager.GetCheckPointPosition();
this.transform.position = new Vector3(checkPointPos.x, checkPointPos.y, 0);
_checkPointIsDone = true;
}
this.textoUI.text = this.TextoInformativo + (object) PLAYER.HP;
}
}
}
Parto do princípio que o script acima está contido no player, caso não, precisa fazer uma referência ao player nesse script para setar a posição pra ele.
E é isso.
Caso queria que essa posição de checkpoint seja salva mesmo quando vc abre e fecha o jogo, vc pode usar o PlayerPrefs pra isso, mas se for o caso, eu posso modificar o script pra vc.
esta dando esses 4 erros no script "CheckPointManager.cs"
e no visual studio não consta nenhum erro.
O que fazer
Tópicos semelhantes
» Uma ajuda para um sistema de batalhas...
» Queria ajuda para fazer um sistema de rastro no personagen
» Ajuda para criar um sistema de vidas que diminuem com o tempo
» Preciso de ajuda para implementação do sistema de score no jogo na unity
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» Queria ajuda para fazer um sistema de rastro no personagen
» Ajuda para criar um sistema de vidas que diminuem com o tempo
» Preciso de ajuda para implementação do sistema de score no jogo na unity
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos