Boa tarde! Espero que esteja bem!
Como mandei em outra dúvida, meu GetComponent não está indo, então tentei fazer alguns outros caminhos para fazer o código rodar, mas tive alguns problemas para dar certo.... Gostaria de saber o porquê.
Os métodos que pensei foram: No script do zumbi:
1º: Dentro do Update, colocar um if com a condicional do bool, então eu fiz:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Zobies : MonoBehaviour
{
public GameObject Player;
public float speedZ;
public GameObject GameOver_Text;
public bool lived = true;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (lived == false)
{
if (Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("Scene_1");
}
}
}
private void FixedUpdate()
{
speedZ = 6;
float distance = Vector3.Distance(transform.position, Player.transform.position);
Vector3 direction = Player.transform.position - transform.position;
//Quaternion = rotação, LookRotation fala para onde o corpo rigido tem que rotacionar em relação a outro objeto
Quaternion newRotation = Quaternion.LookRotation(direction);
GetComponent<Rigidbody>().MoveRotation(newRotation);
if (distance > 2.5)
{
GetComponent<Rigidbody>().MovePosition
(GetComponent<Rigidbody>().position +
direction.normalized * speedZ * Time.deltaTime);
GetComponent<Animator>().SetBool("Atacando", false);
}
else
{
GetComponent<Animator>().SetBool("Atacando", true);
}
void OnTriggerEnter(Collider Collision_Object)
{
Destroy(Collision_Object.gameObject);
}
}
void Attacks_Player()
{
Time.timeScale = 0;
GameOver_Text.SetActive(true);
lived = false;
}
}
Mas aí toda vez que eu clicava sem mesmo ter perdido o jogo, ele recomeçava.
2º: Eu tentei colocar um incremento diferente no if ao invés da variável bool foi if(GameOver_Text == false), então ficou:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Zobies : MonoBehaviour
{
public GameObject Player;
public float speedZ;
public GameObject GameOver_Text;
// Update is called once per frame
void Update()
{
if (GameOver_Text == true)
{
if (Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("Scene_1");
}
}
}
private void Start()
{
Time.timeScale = 1;
}
private void FixedUpdate()
{
speedZ = 6;
float distance = Vector3.Distance(transform.position, Player.transform.position);
Vector3 direction = Player.transform.position - transform.position;
//Quaternion = rotação, LookRotation fala para onde o corpo rigido tem que rotacionar em relação a outro objeto
Quaternion newRotation = Quaternion.LookRotation(direction);
GetComponent<Rigidbody>().MoveRotation(newRotation);
if (distance > 2.5)
{
GetComponent<Rigidbody>().MovePosition
(GetComponent<Rigidbody>().position +
direction.normalized * speedZ * Time.deltaTime);
GetComponent<Animator>().SetBool("Atacando", false);
}
else
{
GetComponent<Animator>().SetBool("Atacando", true);
}
void OnTriggerEnter(Collider Collision_Object)
{
Destroy(Collision_Object.gameObject);
}
}
void Attacks_Player()
{
Time.timeScale = 0;
GameOver_Text.SetActive(true);
}
}
Desse jeito aconteceu a mesma coisa que no primeiro, só de tentar atirar o jogo já reinicia automaticamente.