Dúvida de Respawn
4 participantes
Página 1 de 1
Dúvida de Respawn
Eu estou com uma dúvida em relação ao respawn do personagem, eu estava usando um sistema para o personagem coletar algumas chaves pelo cenário e usar para abrir uma porta porém caso o personagem morra e ele tenha coletado algumas chaves ao reiniciar a partida as chaves que ele coletou continuam sendo contabilizadas, não permitindo que o jogador consiga prosseguir coletando as "novas" chaves pelo cenário.
Gostaria de saber como faço pra zerar os objetos coletados após reiniciar a partida.
Script da porta trancada
Script da Chave
Gostaria de saber como faço pra zerar os objetos coletados após reiniciar a partida.
Script da porta trancada
- Código:
#pragma strict
var openfinaldoor:Keycollider;
// Smothly open a door
var smooth = 2.0;
var DoorOpenAngle = 90.0;
private var open : boolean;
private var enter : boolean;
var Sound: GameObject;
private var defaultRot : Vector3;
private var openRot : Vector3;
function Start(){
defaultRot = transform.eulerAngles;
openRot = new Vector3 (defaultRot.x, defaultRot.y + DoorOpenAngle, defaultRot.z);
}
//Main function
function Update (){
if(open){
//Open door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, openRot, Time.deltaTime * smooth);
}else{
//Close door
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, defaultRot, Time.deltaTime * smooth);
}
if( Keycollider.keyCounter == 4 && Input.GetKeyDown("q") && enter){
open = !open;
}
}
function OnGUI(){
if(enter){
GUI.Label (new Rect(Screen.width/2 - 75, Screen.height - 120, 350, 50), "Esta trancada, preciso de uma chave para destrancar! Se voce tiver 4 chaves use o Q para abrir a porta");}
}
//Activate the Main function when player is near the door
function OnTriggerEnter (other : Collider){
if (other.gameObject.tag == "Player") {
enter = true;
}
}
//Deactivate the Main function when player is go away from door
function OnTriggerExit (other : Collider){
if (other.gameObject.tag == "Player") {
enter = false;
}
}
function OnTriggerStay()
{
if(Input.GetKeyDown("q"))
{
Sound.GetComponent.<AudioSource>().Play();
}
}
Script da Chave
- Código:
#pragma strict
import UnityEngine.UI;
import UnityEngine.GUI;
public static var keyCounter = 0;
public var customGuiStyle : GUIStyle; //Gestaltung der GUIBox
public var openfinaldoor : boolean;
function Start () {
}
function Update () {
if (keyCounter ==1)
{openfinaldoor=true;}
else{
openfinaldoor =false;}
print(openfinaldoor);
}
function OnTriggerEnter(collision : Collider){
if (collision.tag=="Key"){
Destroy(collision.gameObject);
keyCounter = keyCounter + 1;
//Debug.Log("Bin drin");
}
}
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
O jogo tem checkpoints? Caso não tenha você pode reiniciar a scene quando ele apertar em respawn.
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
Então, ele até reinicia tranquilo mas os itens que já foram coletados ainda são contabilizados após o respawn (que recomeça a cena), eu fiz esse sistema para caso o jogador encontre 4 chaves ele consiga abrir a porta trancada só que caso ele pegue 2 chaves e morra, no respawn da cena ele continua dando que coletou 2 chaves e se ele coletar as quatro chaves a porta não vai se abrir pq vai dar que ele coletou 6 chaves, queria zerar o contador de chaves quando reinicia a cena.
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Simples.(Caso não funcione poste aqui o script que reinicia)
Coloque no Start o valor de chaves que vc quer que comece ai toda vez que de start o jogo ele volta a 0;
Coloque no Start o valor de chaves que vc quer que comece ai toda vez que de start o jogo ele volta a 0;
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: Dúvida de Respawn
Ou você pode aumentar a condição para maior que 4 chaves assim caso o player coletasse 2 e morresse ele respawnaria e coletasse mais 4 então ficaria 6 mesmo assim conseguiria abrir a porta.
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
Essa ideia até que é boa Stipp, foda é que qualquer jogador malandro que descobrisse poderia passar a fase de forma mais rápida kkkkk.
O Script pra reiniciar a fase é esse de GameOver
O Script pra reiniciar a fase é esse de GameOver
- Código:
using UnityEngine;
using System.Collections;
public class GameOver : MonoBehaviour {
public Texture texture;
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnGUI ()
{
GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),texture);
if(GUI.Button(new Rect(Screen.width*0.1f,Screen.height*0.8f,Screen.width/3,Screen.height/10),"CONTINUA"))
{
Application.LoadLevel("Floresta");
}
if(GUI.Button(new Rect(Screen.width*0.6f,Screen.height*0.8f,Screen.width/3,Screen.height/10),"SAIR"))
{
Application.Quit();
}
}
}
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Cria uma variável no playerPrefs para salvar as chaves, e quando o player morreu você seta 0 no playerPrefs
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
Dá pra fazer isso no Script da KeyCollider mesmo?
Meu Player não tem uma Script própria, tanto é que tô cheio de Scripts misturados aqui (o do GameOver é feito do C# e o da KeyCollider e Locked Door são no Java).
Meu Player não tem uma Script própria, tanto é que tô cheio de Scripts misturados aqui (o do GameOver é feito do C# e o da KeyCollider e Locked Door são no Java).
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Vou tentar fazer o script aqui, estou pelo celular então pode demorar um pouco.
@EDIT:
A organização do código fico ruim mas eu acho que esta funcional, testa ai:
@EDIT:
A organização do código fico ruim mas eu acho que esta funcional, testa ai:
- Código:
Key: #pragma strict
import UnityEngine.UI;
import UnityEngine.GUI;
public static var keyCounter = 0;
public var customGuiStyle : GUIStyle; //Gestaltung der GUIBox
public var openfinaldoor : boolean;
function Start () { }
function Update () {
if (keyCounter ==1) {
openfinaldoor=true;
} else{
openfinaldoor =false;
}
print(openfinaldoor);
}
function OnTriggerEnter(collision : Collider){
if (collision.tag=="Key"){
var keyPrefs: int;
keyPrefs = PlayerPrefs.GetInt("Keys");
PlayerPrefs.SetInt("Keys", keyPrefs+1);
Destroy(collision.gameObject); http://Debug.Log("Bin drin");
}
}
GameOver:
using UnityEngine;
using System.Collections;
public class GameOver : MonoBehaviour {
public Texture texture;
void Start () { }
void Update () { }
void OnGUI (){
GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),texture);
if(GUI.Button(new Rect(Screen.width*0.1f,Screen.height*0.8f,Screen.width/3,Screen.height/10),"CONTINUA")){
PlayerPrefs.SetInt("Keys", 0);
Application.LoadLevel("Floresta");
}
if(GUI.Button(new Rect(Screen.width*0.6f,Screen.height*0.8f,Screen.width/3,Screen.height/10),"SAIR")){
Application.Quit();
}
}
}
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
Coloquei o Script aqui (só inverti a ordem do var KeyPrefs) e dá dando uma coisa bizarra, o valor de cada chave se duplica quando reinicio, no KeyPrefs primeiro peguei duas chaves e deu 6, depois pegue as mesmas duas e o valor virou 8.
Edit: Tentei mexer em algumas coisas aqui e ele continua agindo dessa maneira bizonha mas diferente, a primeira chave geralmente tem um valor altíssimo (representa 16 ou 24 chaves), as seguintes valem só uma chave (o que é correto) porém não adianta deletar as chaves e fazer outras o algo do naipe, a primeira coletada sempre acaba tendo valor alto.
Edit: Tentei mexer em algumas coisas aqui e ele continua agindo dessa maneira bizonha mas diferente, a primeira chave geralmente tem um valor altíssimo (representa 16 ou 24 chaves), as seguintes valem só uma chave (o que é correto) porém não adianta deletar as chaves e fazer outras o algo do naipe, a primeira coletada sempre acaba tendo valor alto.
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Onde que você inverteu a ordem? Manda o script.
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
- Código:
#pragma strict
import UnityEngine.UI;
import UnityEngine.GUI;
public static var keyCounter = 0;
public var customGuiStyle : GUIStyle; //Gestaltung der GUIBox
public var openfinaldoor : boolean;
public var keyPrefs: int;
function Start () { }
function Update () {
if (keyCounter ==1) {
openfinaldoor=true;
} else{
openfinaldoor =false;
}
print(openfinaldoor);
}
function OnTriggerEnter(collision : Collider){
if (collision.tag=="Key"){
keyPrefs = PlayerPrefs.GetInt("Keys");
PlayerPrefs.SetInt("Keys", keyPrefs+1);
Destroy(collision.gameObject); http://Debug.Log("Bin drin");
}
}
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
@EDIT:
Tinha um erro, a scene tava abrindo 2 vezes, tenta agora
Tinha um erro, a scene tava abrindo 2 vezes, tenta agora
- Código:
GAMEOVER:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class GameOver : MonoBehaviour {
public Texture texture;
void Start () {
}
void Update () {
}
void OnGUI (){
GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),texture);
if(GUI.Button(new Rect(Screen.width*0.1f,Screen.height*0.8f,Screen.width/3,Screen.height/10),"CONTINUA")){
SceneManager.LoadScene("Floresta");
}
if(GUI.Button(new Rect(Screen.width*0.6f,Screen.height*0.8f,Screen.width/3,Screen.height/10),"SAIR")){
Application.Quit();
}
}
}
KEY:
#pragma strict
import UnityEngine.UI;
import UnityEngine.GUI;
public static var keyCounter = 0;
public var customGuiStyle : GUIStyle; //Gestaltung der GUIBox
public var openfinaldoor : boolean;
function Start () {
}
function Update () {
if (keyCounter ==1){
openfinaldoor=true;
}else{
openfinaldoor =false;
}
print(openfinaldoor);
}
function OnTriggerEnter(collision : Collider){
if (collision.tag=="Key"){
Destroy(collision.gameObject);
keyCounter = keyCounter + 1;
//Debug.Log("Bin drin");
}
}
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
Amigo, eu vou tentar fazer com que ele aceitei 4 ou mais chaves mesmo, nenhuma forma funcionou aqui, nesse último Script o Unity alega que o "using UnityEngine.SceneManagement;" é um código inexistente.
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Nesse ultimo script aqui reconhece, qual a versão da sua Unity?
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Eu estou utilizando a 5.3 acho que esse comando foi uma implementação nas ultimas versões
Stipp- Avançado
- PONTOS : 3640
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Dúvida de Respawn
Vou atualizar
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
No script da chave coloque na function start o comando: keycounter = 0;
Pronto, cabaram seus pobremas
Pronto, cabaram seus pobremas
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: Dúvida de Respawn
RenanMSV escreveu:No script da chave coloque na function start o comando: keycounter = 0;
Pronto, cabaram seus pobremas
E não é que deu certo mesmo? Valeu cara.
Gray_14- Avançado
- PONTOS : 3444
REPUTAÇÃO : 22
Idade : 30
Áreas de atuação : Modelagem básica low poly no Maya 3D
Respeito as regras :
Re: Dúvida de Respawn
Agora se lembre, se voce precisar que uma variavel tome um valor especifico voce deve coloca esse valor sempre na start do script. Assim quando voce carregar uma cena ele volte ao valor inicial.
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Tópicos semelhantes
» Duvida sobre criar respawn.
» Respawn
» Respawn Random.Range
» CheckPoint & Respawn
» Ajuda no Respawn
» Respawn
» Respawn Random.Range
» CheckPoint & Respawn
» Ajuda no Respawn
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos