Erro ao ligar script barra de vida / continua ao personagem
5 participantes
Página 1 de 1
Erro ao ligar script barra de vida / continua ao personagem
Erro ao ligar script barra de vida / continua ao personagem. Esta dando esse erro http://prntscr.com/97by78
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
O nome do Script tem que ta igual ao nome da classe
ismarspn- Programador
- PONTOS : 3998
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
agora deu esse erro http://prntscr.com/97c9r8
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
- Código:
using UnityEngine;
using System.Collections;
public class VIDA : MonoBehaviour {
public float VidaDoPersonagem;
public Texture Sangue,Contorno;
public int VidaCheia = 100;
void Start (){
VidaDoPersonagem = VidaCheia;
}
void Update (){
if (VidaDoPersonagem >= VidaCheia) {
VidaDoPersonagem = VidaCheia;
} else if (VidaDoPersonagem <= 0) {
VidaDoPersonagem = 0;
}
}
void OnGUI (){
GUI.DrawTexture (new Rect (Screen.width / 25, Screen.height / 15, Screen.width / 5.5f/VidaCheia*VidaDoPersonagem, Screen.height / 25), Sangue);
GUI.DrawTexture (new Rect (Screen.width / 40, Screen.height / 40, Screen.width / 5, Screen.height / 8), Contorno);
}
}
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
esse nome atrás de "contorno" la na ultima linha do GUI.DrawTexture está certo? não tem nenhuma variavel com o mesmo nome... e você ta esquecendo de fechar um parêntese na mesma linha...
ismarspn- Programador
- PONTOS : 3998
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
na verdade tem na quinta linha mas o parenteses eu nao tinha percebido
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Este script que você postou está sem nenhum erro... com certeza o problema está no nome que você está dando ao script
Re: Erro ao ligar script barra de vida / continua ao personagem
eu coloquei o nome de barra devida
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
o nome da classe é "VIDA", então coloca o nome do script de "VIDA" também, amigo...
ismarspn- Programador
- PONTOS : 3998
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Eitah, Ctrl C + Ctrl V rulando solto nos scripts do fórum... Da até um desanimo.
Como o ismarspn falou, o nome da classe deve ser igual ao nome do script
Como o ismarspn falou, o nome da classe deve ser igual ao nome do script
Re: Erro ao ligar script barra de vida / continua ao personagem
esse script é seu mesmo eu tava vendo o seu video tentando colocar no jogo mais nao funcionou entao eu vim aki
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Aconselho seguir este tutorial ainda... é mais completo.
https://www.schultzgames.com/t526-tutorial-dano-por-queda-e-barra-de-vida-continua-no-mesmo-script?highlight=vida
https://www.schultzgames.com/t526-tutorial-dano-por-queda-e-barra-de-vida-continua-no-mesmo-script?highlight=vida
Re: Erro ao ligar script barra de vida / continua ao personagem
ok vlw agora consegui.
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Pode me ajudar de novo? to com erros nesse script mais nao sei o que fazer
using UnityEngine;
using System.Collections;
public enum AnimationStates{
WALK,
RUN,
IDDLE,
NONE=4
}
public class AnimationController : MonoBehaviour {
public Animator animator;
public void PlayAnimation(AnimationStates stateAnimation){
switch (stateAnimation){
case AnimationStates.IDDLE;{
StopAnimations()
animator.SetBool("inIddle", true);
}
break;
case AnimationStates.WALK;{
StopAnimations()
animator.SetBool("inWALK", true);
}
break;
case AnimationStates.RUN;{
StopAnimations()
animator.SetBool("inRUN", true);
}
break;
}
}
using UnityEngine;
using System.Collections;
public enum AnimationStates{
WALK,
RUN,
IDDLE,
NONE=4
}
public class AnimationController : MonoBehaviour {
public Animator animator;
public void PlayAnimation(AnimationStates stateAnimation){
switch (stateAnimation){
case AnimationStates.IDDLE;{
StopAnimations()
animator.SetBool("inIddle", true);
}
break;
case AnimationStates.WALK;{
StopAnimations()
animator.SetBool("inWALK", true);
}
break;
case AnimationStates.RUN;{
StopAnimations()
animator.SetBool("inRUN", true);
}
break;
}
}
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Está com varios erros, na frente dos STATES vc tem que colocar dois pontos em vez de ponto e vírgula, e pra parar as animations se não me engano tem que colocar mais ou menos assim:
- Código:
GetComponent<Animation>().Stop("inWALK");
ismarspn- Programador
- PONTOS : 3998
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Esses sao os erros
http://prntscr.com/97w0n7
http://prntscr.com/97w10t
http://prntscr.com/97w0n7
http://prntscr.com/97w10t
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Você esqueceu de fechar algumas chaves, e mudar os pontos e vírgula dos STATES, tente assim:
- Código:
using UnityEngine;
using System.Collections;
public enum AnimationStates{
WALK,
RUN,
IDDLE,
NONE=4
}
public class AnimationController : MonoBehaviour {
public Animator animator;
public void PlayAnimation(AnimationStates stateAnimation){
switch (stateAnimation){
case AnimationStates.IDDLE:{
animator.SetBool("inRUN", false);
animator.SetBool("inWALK", false);
animator.SetBool("inIddle", true);
}
break;
case AnimationStates.WALK:{
animator.SetBool("inRUN", false);
animator.SetBool("inWALK", true);
animator.SetBool("inIddle", false);
}
break;
case AnimationStates.RUN:{
animator.SetBool("inRUN", true);
animator.SetBool("inWALK", false);
animator.SetBool("inIddle", false);
}
break;
}
}
}
ismarspn- Programador
- PONTOS : 3998
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
vlw amigo agora ta funcionando
Ruan Matheus- Iniciante
- PONTOS : 3302
REPUTAÇÃO : 0
Idade : 28
Respeito as regras :
Help na BARRA DE VIDA
Fala aí galera eu sou novo no Fórum , porem já acompanho os Tutors do Marcos já faz algum tempo. Eu tenho um projeto bem legal que já esta em andamento , é um jogo de luta, porém gostaria de ajuda para resolver um pequeno problema.
Eu criei uma Barra de Vida na qual o Player1 ao collidir com Player2 , consome 10 de vida da Barra, o player1 esta com "Tag" mas eu gostaria que , quando o Player1 acerta-se um ataque consumi-se essa vida do Player2.
não sei se fui bem claro. Minha duvida é: tenho que criar uma variável statica para acessar o outro Script que esta com as movimentação de atague? como ficaria? segue os dois script.
//Script Barra Vida
//Script de Movimentação e Ataque
Obs: Eu estou aprendendo C# com os videos do Marcos.
Se puderem me ajudar eu agradeço.
Valeu galera.
Eu criei uma Barra de Vida na qual o Player1 ao collidir com Player2 , consome 10 de vida da Barra, o player1 esta com "Tag" mas eu gostaria que , quando o Player1 acerta-se um ataque consumi-se essa vida do Player2.
não sei se fui bem claro. Minha duvida é: tenho que criar uma variável statica para acessar o outro Script que esta com as movimentação de atague? como ficaria? segue os dois script.
//Script Barra Vida
- Código:
using UnityEngine;
using System.Collections;
public class BarraVida : MonoBehaviour {
public float VidaDoPersonagem;
public float gravidade= -50;
public Texture Sangue,Contorno;
public int VidaCheia = 100;
public GameObject CorpoInimigo;
void Start (){
VidaDoPersonagem = VidaCheia;
}
void Update (){
Physics.gravity = new Vector3(0, gravidade, 0);
if (VidaDoPersonagem >= VidaCheia) {
VidaDoPersonagem = VidaCheia;
}
else if (VidaDoPersonagem <= 0) {
VidaDoPersonagem = 0;
}
}
void OnCollisionEnter(Collision collision) {
if (collision.gameObject.tag == "Player1") {
VidaDoPersonagem = VidaDoPersonagem - 0.5f;
}
if(VidaDoPersonagem <=0){
Instantiate(CorpoInimigo,transform.position,transform.rotation);
Destroy(gameObject);
}
}
void OnGUI () {
GUI.DrawTexture (new Rect (Screen.width / 25, Screen.height / 15, Screen.width / 5.5f/VidaCheia*VidaDoPersonagem, Screen.height / 25), Sangue);
GUI.DrawTexture (new Rect (Screen.width / 40, Screen.height / 40, Screen.width / 5, Screen.height / 7), Contorno);
}
}
//Script de Movimentação e Ataque
- Código:
using UnityEngine;
using System.Collections;
public class WarriorAnimationDemo : MonoBehaviour {
public Animator animator;
float rotationSpeed = 30;
Vector3 inputVec;
bool isMoving;
bool isStunned;
//Warrior types
public enum Warrior{Karate, Ninja, Brute, Sorceress};
public Warrior warrior;
void Update()
{
//Get input from controls
float z = Input.GetAxisRaw("Horizontal");
float x = -(Input.GetAxisRaw("Vertical"));
inputVec = new Vector3(x, 0, z);
//Apply inputs to animator
animator.SetFloat("Input X", z);
animator.SetFloat("Input Z", -(x));
if (x != 0 || z != 0 ) //if there is some input
{
//set that character is moving
animator.SetBool("Moving", true);
isMoving = true;
animator.SetBool("Running", true);
}
else
{
//character is not moving
animator.SetBool("Moving", false);
animator.SetBool("Running", false);
isMoving = false;
}
if (Input.GetButtonDown("Fire1"))
{
animator.SetTrigger("Attack1Trigger");
if (warrior == Warrior.Brute)
StartCoroutine (COStunPause(1.2f));
else if (warrior == Warrior.Sorceress)
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
if (Input.GetButtonDown("Fire2"))
{
animator.SetTrigger("Attack2Trigger");
if (warrior == Warrior.Brute)
StartCoroutine (COStunPause(1.2f));
else if (warrior == Warrior.Sorceress)
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
UpdateMovement(); //update character position and facing
}
public IEnumerator COStunPause(float pauseTime)
{
isStunned = true;
yield return new WaitForSeconds(pauseTime);
isStunned = false;
}
void RotateTowardsMovementDir() //face character along input direction
{
if (inputVec != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(inputVec), Time.deltaTime * rotationSpeed);
}
}
float UpdateMovement()
{
Vector3 motion = inputVec; //get movement input from controls
//reduce input for diagonal movement
motion *= (Mathf.Abs(inputVec.x) == 1 && Mathf.Abs(inputVec.z) == 1)?.7f:1;
RotateTowardsMovementDir(); //if not strafing, face character along input direction
return inputVec.magnitude; //return a movement value for the animator, not currently used
}
void OnGUI ()
{
if (GUI.Button (new Rect (25, 210*2, 100*2, 30), "Attack1"))
{
animator.SetTrigger("Attack1Trigger");
if (warrior == Warrior.Brute || warrior == Warrior.Sorceress) //if character is Brute or Sorceress
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
if (GUI.Button (new Rect (25, 230*2, 100*2, 30), "Attack2"))
{
animator.SetTrigger("Attack2Trigger");
if (warrior == Warrior.Brute || warrior == Warrior.Sorceress) //if character is Brute or Sorceress
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
if (GUI.Button (new Rect (25, 250*2, 100*2, 30*2), "Attack3"))
{
animator.SetTrigger("Attack3Trigger");
if (warrior == Warrior.Brute || warrior == Warrior.Sorceress) //if character is Brute or Sorceress
StartCoroutine (COStunPause(1.2f));
else
StartCoroutine (COStunPause(.6f));
}
}
}
Obs: Eu estou aprendendo C# com os videos do Marcos.
Se puderem me ajudar eu agradeço.
Valeu galera.
Re: Erro ao ligar script barra de vida / continua ao personagem
Se você fizer o sistema de dano a partir da colisão dos 2 jogadores, quando um efetuar o golpe e acertar vai retirar vida de ambos, pois esta colidindo, crie uma variável para verificar se o jogador esta atacando, depois quando for dar o dano verifique se jogador esta atacando, caso esteja é só retirar vida do outro jogador.
Stipp- Avançado
- PONTOS : 3639
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Eu não manjo quase nada de Script, só sei copia e colar , kkk.
Mas fiz +- assim , mas esta dando erro.
esta dando esse ERRO: Assets/ScriptsBarraVida/BarraVida.cs(26,17): error CS0266: Cannot implicitly convert type `UnityEngine.Component' to `WarriorAnimationDemo'. An explicit conversion exists (are you missing a cast?)
Assets/ScriptsBarraVida/BarraVida.cs(27,17): error CS0029: Cannot implicitly convert type `void' to `bool'
Mas fiz +- assim , mas esta dando erro.
- Código:
using UnityEngine;
using System.Collections;
public class BarraVida : MonoBehaviour {
public float VidaDoPersonagem;
public float gravidade= -50;
public Texture Sangue,Contorno;
public int VidaCheia = 100;
public GameObject CorpoInimigo;
public static WarriorAnimationDemo AuxMovAtaque;
void Start (){
VidaDoPersonagem = VidaCheia;
}
void Update (){
Physics.gravity = new Vector3(0, gravidade, 0);
if (VidaDoPersonagem >= VidaCheia) {
VidaDoPersonagem = VidaCheia;
}
else if (VidaDoPersonagem <= 0) {
VidaDoPersonagem = 0;
}
}
void OnCollisionEnter(Collision collision) {
AuxMovAtaque = collision.transform.GetComponent ("WarriorAnimationDemo");
if (AuxMovAtaque.animator.SetTrigger("Attack1Trigger"))
{
VidaDoPersonagem = VidaDoPersonagem - 0.5f;
}
if(VidaDoPersonagem <=0){
Instantiate(CorpoInimigo,transform.position,transform.rotation);
Destroy(gameObject);
}
}
void OnGUI () {
GUI.DrawTexture (new Rect (Screen.width / 25, Screen.height / 15, Screen.width / 5.5f/VidaCheia*VidaDoPersonagem, Screen.height / 25), Sangue);
GUI.DrawTexture (new Rect (Screen.width / 40, Screen.height / 40, Screen.width / 5, Screen.height / 7), Contorno);
}
}
esta dando esse ERRO: Assets/ScriptsBarraVida/BarraVida.cs(26,17): error CS0266: Cannot implicitly convert type `UnityEngine.Component' to `WarriorAnimationDemo'. An explicit conversion exists (are you missing a cast?)
Assets/ScriptsBarraVida/BarraVida.cs(27,17): error CS0029: Cannot implicitly convert type `void' to `bool'
Re: Erro ao ligar script barra de vida / continua ao personagem
Testa agora
- Código:
using UnityEngine;
using System.Collections;
public class BarraVida : MonoBehaviour {
public float VidaDoPersonagem;
public float gravidade= -50;
public Texture Sangue,Contorno;
public int VidaCheia = 100;
public GameObject CorpoInimigo;
public static WarriorAnimationDemo AuxMovAtaque;
void Start (){
VidaDoPersonagem = VidaCheia;
}
void Update (){
Physics.gravity = new Vector3(0, gravidade, 0);
if (VidaDoPersonagem >= VidaCheia) {
VidaDoPersonagem = VidaCheia;
}
else if (VidaDoPersonagem <= 0) {
VidaDoPersonagem = 0;
}
}
void OnCollisionEnter(Collision collision) {
AuxMovAtaque = collision.transform.GetComponent<WarriorAnimationDemo>();
if (AuxMovAtaque.animator.GetBool("Attack1Trigger")){
VidaDoPersonagem = VidaDoPersonagem - 0.5f;
}
if(VidaDoPersonagem <=0){
Instantiate(CorpoInimigo,transform.position,transform.rotation);
Destroy(gameObject);
}
}
void OnGUI () {
GUI.DrawTexture (new Rect (Screen.width / 25, Screen.height / 15, Screen.width / 5.5f/VidaCheia*VidaDoPersonagem, Screen.height / 25), Sangue);
GUI.DrawTexture (new Rect (Screen.width / 40, Screen.height / 40, Screen.width / 5, Screen.height / 7), Contorno);
}
}
Stipp- Avançado
- PONTOS : 3639
REPUTAÇÃO : 102
Idade : 25
Áreas de atuação : Programação: C#, VB.NET, PHP e outras.
Modelagem: Blender.
Respeito as regras :
Re: Erro ao ligar script barra de vida / continua ao personagem
Caraca, agora esta dando esses ERROS: Actor::updateMassFromShapes: Compute mesh inertia tensor failed for one of the actor's mesh shapes! Please change mesh geometry or supply a tensor manually!
NullReferenceException: Object reference not set to an instance of an object
BarraVida.OnCollisionEnter (UnityEngine.Collision collision) (at Assets/ScriptsBarraVida/BarraVida.cs:27)
E continua , quando ambos colidem tira vida dos dois.
NullReferenceException: Object reference not set to an instance of an object
BarraVida.OnCollisionEnter (UnityEngine.Collision collision) (at Assets/ScriptsBarraVida/BarraVida.cs:27)
E continua , quando ambos colidem tira vida dos dois.
Re: Erro ao ligar script barra de vida / continua ao personagem
Cara , eu tive que tirar um outro Script que estava no personagem, e agora deu certo.
Vc não quer entra nesse projeto comigo? estou precisando de um Programador.
Desde já muito obrigado. valeu!!!!
Vc não quer entra nesse projeto comigo? estou precisando de um Programador.
Desde já muito obrigado. valeu!!!!
Última edição por dinho em Dom Jan 10, 2016 12:44 pm, editado 1 vez(es)
Re: Erro ao ligar script barra de vida / continua ao personagem
Cara foi mal.
Última edição por dinho em Dom Jan 10, 2016 12:46 pm, editado 1 vez(es)
Re: Erro ao ligar script barra de vida / continua ao personagem
Dinho, você desrespeitou 3 veses a regra número 2 do fórum...
ERRO NO Script Barra Vida
Primeiramente peso desculpa pelos erros cometidos no forum.
Olá Stipp, gostaria de mais uma ajuda, ao passar o Script para o Unity5 esta apresentando esse ERRO:
NullReferenceException: Object reference not set to an instance of an object
BarraVida.OnCollisionEnter (UnityEngine.Collision collision) (at Assets/ScriptsBarraVida/BarraVida.cs:27)
não estou conseguindo entender do q esta se referindo.
Olá Stipp, gostaria de mais uma ajuda, ao passar o Script para o Unity5 esta apresentando esse ERRO:
NullReferenceException: Object reference not set to an instance of an object
BarraVida.OnCollisionEnter (UnityEngine.Collision collision) (at Assets/ScriptsBarraVida/BarraVida.cs:27)
não estou conseguindo entender do q esta se referindo.
Tópicos semelhantes
» Erro em script de controle de personagem.
» [TUTORIAL] Barra de VIDA / HP contínua
» [Duvida]Como fazer uma barra de vida usando o canvas?obs:so a parte de diminuir a barra
» como criar uma barra de vida?
» fazer o player perde vida e sua barra de vida descer conforme o dano
» [TUTORIAL] Barra de VIDA / HP contínua
» [Duvida]Como fazer uma barra de vida usando o canvas?obs:so a parte de diminuir a barra
» como criar uma barra de vida?
» fazer o player perde vida e sua barra de vida descer conforme o dano
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos