Como eu faço checkpoint?
5 participantes
Página 1 de 1
Como eu faço checkpoint?
Aqui no tutorial do meu jogo tem varios niveis e queria colocar checkpoint neles para quando o player morrer nao ter que começar todo o tutorial dinovo,como faz um negoso desse,de tipo quando o jogador passar de um cubo,e quando morrer vai nascer nesse cubo em vez de começar a cena inteira.
Re: Como eu faço checkpoint?
Use cube collider com trigger ativo e junto com o OnTriggerEnter para detecção do ponto. Depois só cacheie em uma variável Vector3 e quando morrer, sete para retesar no ultimo vetor salvo...
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html
Re: Como eu faço checkpoint?
Eu ja usei o teleporte, e bem simples;
1- Crie um cubo, que sera seu inimigo, marque "Is Trigger" jogue esse script dentro do cubo (JavaScript)
2 - Agora vc marca seu personagem com a tag (Player) e crie um game object , que servira de spwan point, arraste o seu spawn point para o lugar desejado no mapa, e linque no script que esta no cubo.
quando seu player colidir com o cubo ele sera teleportado de volta para o gameobject que vc criou no mapa. e bem simples mas pode ajudar.
espero que ajude
1- Crie um cubo, que sera seu inimigo, marque "Is Trigger" jogue esse script dentro do cubo (JavaScript)
- Código:
var destino : Transform;
function OnTriggerEnter (other : Collider) {
if (other.CompareTag ("Player")) {
other.transform.position=destino.transform.position;
}
}
2 - Agora vc marca seu personagem com a tag (Player) e crie um game object , que servira de spwan point, arraste o seu spawn point para o lugar desejado no mapa, e linque no script que esta no cubo.
quando seu player colidir com o cubo ele sera teleportado de volta para o gameobject que vc criou no mapa. e bem simples mas pode ajudar.
espero que ajude
ronito- Avançado
- PONTOS : 3669
REPUTAÇÃO : 9
Idade : 27
Respeito as regras :
Re: Como eu faço checkpoint?
- Código:
public Vector3 m_checkpoint;
void SetCheckpoint(Vector3 position){
m_checkpoint = position;
}
void ReturnToLastCheckpoint(Transform trans){
trans.position = m_checkpoint;
}
Seria mais ou menos o script master... Depois nos cubos adicione um script para detecção e desativamento do objeto e passe para salvar o checkpoint.
- Código:
void OnTriggerEnter(Collider col){
m_script.SetCheckpoint(transform.position);
gameObject.SetActive(false);
}
Depois quando morrer, só chamar o ReturnToLastCheckpoint();
Re: Como eu faço checkpoint?
Coloque em qualquer lugar, como se fosse um gerenciador, o CheckpointManager por exemplo e acesse pelos outros que irão nos colliders, como também CheckpointBehaviour...
Re: Como eu faço checkpoint?
Eu coloquei esse primeiro script no jogador e esse segundo ai eu boto em um cubo?
Re: Como eu faço checkpoint?
O segundo script é colocado onde você for detectar o checkpoint, no caso eu citei um exemplo de usar um cube collider... Você tem que fazer uma instância do primeiro script, ou declarar ele nos segundos scripts...
Re: Como eu faço checkpoint?
Como faz isso? e ta dando esse erro:
Assets/Scripts/NothingSelected.cs(8,12): error CS0122: `m_script.SetCheckpoint(UnityEngine.Vector3)' is inaccessible due to its protection level
Assets/Scripts/NothingSelected.cs(8,12): error CS0122: `m_script.SetCheckpoint(UnityEngine.Vector3)' is inaccessible due to its protection level
Re: Como eu faço checkpoint?
Ficando assim primeiro script
- Código:
using UnityEngine;
using System.Collections;
public class m_checkpoint : MonoBehaviour {
public static m_checkpoint Instance;//para instanciar o script
public Vector3 m_checkpoint;
void SetCheckpoint(Vector3 position){
m_checkpoint = position;
}
void ReturnToLastCheckpoint(Transform trans){
trans.position = m_checkpoint;
}
}
- Código:
using UnityEngine;
using System.Collections;
public class m_script : MonoBehaviour {
public static m_checkpoint Instance;//para declara o outro script
public Vector3 m_checkpoint;
void OnTriggerEnter(Collider col){
m_script.SetCheckpoint(transform.position);
gameObject.SetActive(false);
}
}
Re: Como eu faço checkpoint?
;
Deixe como PublicDUT escreveu:Como faz isso? e ta dando esse erro:
Assets/Scripts/NothingSelected.cs(8,12): error CS0122: `m_script.SetCheckpoint(UnityEngine.Vector3)' is inaccessible due to its protection level
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Como eu faço checkpoint?
Callyde Jr escreveu:Ficando assim primeiro scriptsegundo script
- Código:
using UnityEngine;
using System.Collections;
public class m_checkpoint : MonoBehaviour {
public static m_checkpoint Instance;//para instanciar o script
public Vector3 m_checkpoint;
void SetCheckpoint(Vector3 position){
m_checkpoint = position;
}
void ReturnToLastCheckpoint(Transform trans){
trans.position = m_checkpoint;
}
}
- Código:
using UnityEngine;
using System.Collections;
public class m_script : MonoBehaviour {
public static m_checkpoint Instance;//para declara o outro script
public Vector3 m_checkpoint;
void OnTriggerEnter(Collider col){
m_script.SetCheckpoint(transform.position);
gameObject.SetActive(false);
}
}
Nesse caso eu faria assim:
- Código:
using UnityEngine;
using System.Collections;
public class CheckpointManager: MonoBehaviour {
public static CheckpointManager ins;//Instância.
private Vector3 m_checkpoint;//Posição do checkpoint atual.
void Awake(){
ins = this;//Criar a instância para esse objeto(script).
}
//Setar um checkpoint.
public static void SetCheckpoint(Vector3 position){
ins.m_checkpoint = position;
}
//Retornar para o último checkpoint.
public static void ReturnToLastCheckpoint(Transform trans){
trans.position = ins.m_checkpoint;
}
//Acessar a posição do checkpoint atual;
public static Vector3 GetCheckpoint(){
return ins.m_checkpoint;
}
}
Depois:
- Código:
using UnityEngine;
using System.Collections;
public class CheckpointBehaviour: MonoBehaviour {
//Detectar quando passar no checkpoint e depois desativa-lo para melhor otimização e algum bug.
void OnTriggerEnter(Collider col){
CheckpointManager.SetCheckpoint(transform.position);
gameObject.SetActive(false);
}
}
Para marcar o checkpoint use CheckpointManager.SetCheckpoint(Vector3 position), não há necessidade de declarar, só chama-lo direto e depois para retornar no ultimo checkpoint salve use CheckpointManager.ReturnToLastCheckpoint(Transform trans); e um bônus, caso queira também saber o valor, só cacheie um Vector3 com o método CheckpointManager.GetCheckpoint();
Obs: Deve existir apenas um CheckpointManager, enquanto o CheckpointBehaviour pode ser instanciado várias vezes;
Re: Como eu faço checkpoint?
Sim assim ficou bem melhor,
eu tinha esquecido de colocar a linha 10 no Awake.
eu tinha esquecido de colocar a linha 10 no Awake.
Re: Como eu faço checkpoint?
Como posso resetar as posicoes caso mude de scene ?
Dei uma pesquisada aqui mais nao achei nada.
Dei uma pesquisada aqui mais nao achei nada.
Re: Como eu faço checkpoint?
Crie uma variável Vector3 para cachear os spawns das cenas... Depois só setar o Checkpoint para o spawn, quando mudar de cena...
Re: Como eu faço checkpoint?
Assim?
Sim ele esta funcionando coloquei ele no Player para poder colidir e ativar as funcoes
Sim ele esta funcionando coloquei ele no Player para poder colidir e ativar as funcoes
- Código:
using UnityEngine;
using System.Collections;
public class CheckpointManager : MonoBehaviour {
public static CheckpointManager ins;//Instância.
private Vector3 m_checkpoint;//Posição do checkpoint atual.
public Vector3 m_spawns;//Posiçao inicial
void Awake(){
ins = this;//Criar a instância para esse objeto(script).
}
//Setar um checkpoint.
public static void SetCheckpoint(Vector3 position){
ins.m_checkpoint = position;
noCheck = true;
}
//Retornar para o último checkpoint.
public static void ReturnToLastCheckpoint(Transform trans){
trans.position = ins.m_checkpoint;
}
//Acessar a posição do checkpoint atual;
public static Vector3 GetCheckpoint(){
return ins.m_checkpoint;
}
public static void Reset()
{
ins.m_checkpoint = m_spawns.position;
}
}
Re: Como eu faço checkpoint?
Bom estava dando erro desse modo que fiz.
Coloquei assim no final e pronto
Coloquei assim no final e pronto
- Código:
public static void Reset()
{
ins.m_checkpoint = ins.m_spawns;
}
Tópicos semelhantes
» Como que faço para rotacionar um objeto na posição do player como o cenario
» Como faço sistema de cam
» Como faço um flash em 2D
» Como faço um céu que se mexe?
» como faço um multiplayer na unity 5?
» Como faço sistema de cam
» Como faço um flash em 2D
» Como faço um céu que se mexe?
» como faço um multiplayer na unity 5?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos