Creare Videogiochi - Game Developer

Versione completa: Aiuto problema script per attacco
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Ciao ragazzi, questo script mi sta facendo smattare..
Se lo lascio così, il player esegue le animazioni idle e move alla perfezione

using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {
public Animator animator;
public float horizontalMove;
public float speed;
private bool walking;



// Update is called once per frame
void Update () {

if (Input.GetAxis ("Horizontal") != 0) {
animator.SetBool ("walking", true);
transform.Translate (Vector3.right * Time.deltaTime * speed);
if (Input.GetAxis ("Horizontal") < 0) {
transform.rotation = Quaternion.Euler (0, 180, 0);
}
if (Input.GetAxis ("Horizontal") > 0) {
transform.rotation = Quaternion.Euler (0, 0, 0);
}
} else {
animator.SetBool ("walking", false);
}




quando però aggiungo l'ultimo comando per l'attacco, ovvero:

if Input.GetKey (Space)
animator.SetTrigger("attacco");

mi da errore!! che qualcuno mi aiuti Sad(
Dacci qualche informazione di più sul genere di errore che ti da. Il trigger dell'animator si chiama proprio "attacco"?
Che tipo di errore ti da?
Ciao ragazzi grazie per l'aiuto innanzitutto, il trigger si chiama proprio attacco.
L'errore che ricevo è questo.. All compiler errors have to be fixed before you can enter playmode!
UnityEditor.SceneView:ShowCompileErrorNotification()
Anche io ho avuto lo stesso problema tempo fa, devi aggiustare dei piccoli errori che potrebbero essere presenti nei tuoi script, aprendoli tramite Windows/Console.A me è capitato con un FPS Kit quindi ho disinstallato e reinstallato il tutto, poi nessun problema.
Qui c'è un articolo sul forum di Unity 3D.

Citazione:http://answers.unity3d.com/questions/334...er-pl.html

Spero di averti aiutato Big Grin
(20-04-2015, 07:18 PM)AltairRevenge Ha scritto: [ -> ]Anche io ho avuto lo stesso problema tempo fa, devi aggiustare dei piccoli errori che potrebbero essere presenti nei tuoi script, aprendoli tramite Windows/Console.A me è capitato con un FPS Kit quindi ho disinstallato e reinstallato il tutto, poi nessun problema.
Qui c'è un articolo sul forum di Unity 3D.

Citazione:http://answers.unity3d.com/questions/334...er-pl.html

Spero di averti aiutato Big Grin

Ora vado a cenare poi do un'occhiata, assurdo però come lo script possa funzionare tranquillamente e nel momento in cui aggiungo la stringa per l'attacco mi dia errore..bhaa
Verifica anche i nomi di trigger e script.
Forse hai scritto ''attco'' o ''attaco''.
Forse leggendo non te ne accorgi Smile
Ho ricontrollato tutto e di errori non ce ne sono, ho provato un po' a smanettare con lo script e ha cambiato tipo di errore, provate a dare un'occhiata...

using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {
public Animator animator;
public float horizontalMove;
public float speed;
private bool walking;



// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.Z)
animator.SetTrigger("attacco");

if (Input.GetAxis ("Horizontal") != 0) {
animator.SetBool ("walking", true);
transform.Translate (Vector3.right * Time.deltaTime * speed);
if (Input.GetAxis ("Horizontal") < 0) {
transform.rotation = Quaternion.Euler (0, 180, 0);
}
if (Input.GetAxis ("Horizontal") > 0) {
transform.rotation = Quaternion.Euler (0, 0, 0);
}
} else {
animator.SetBool ("walking", false);




}
}
}




L'errore che viene riportato adesso è il seguente


Assets/PlayerMove.cs(15,33): error CS1525: Unexpected symbol `animator'


sempre più perplesso..
(20-04-2015, 08:26 PM)fedekikko Ha scritto: [ -> ]Ho ricontrollato tutto e di errori non ce ne sono, ho provato un po' a smanettare con lo script e ha cambiato tipo di errore, provate a dare un'occhiata...

using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {
public Animator animator;
public float horizontalMove;
public float speed;
private bool walking;



// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.Z)
animator.SetTrigger("attacco");

if (Input.GetAxis ("Horizontal") != 0) {
animator.SetBool ("walking", true);
transform.Translate (Vector3.right * Time.deltaTime * speed);
if (Input.GetAxis ("Horizontal") < 0) {
transform.rotation = Quaternion.Euler (0, 180, 0);
}
if (Input.GetAxis ("Horizontal") > 0) {
transform.rotation = Quaternion.Euler (0, 0, 0);
}
} else {
animator.SetBool ("walking", false);




}
}
}




L'errore che viene riportato adesso è il seguente


Assets/PlayerMove.cs(15,33): error CS1525: Unexpected symbol `animator'


sempre più perplesso..
Non so se hai sbagliato a riportare lo script sul forum o sono io che mi sbaglio (cosa non da sottovalutare) ma su questa parte dello script non mancano le parentesi graffe di apertura e chiusura dell' if ?

void Update () {
if (Input.GetKey(KeyCode.Z)
animator.SetTrigger("attacco");
Uhm, prova a fare (Input.GetKeyDown("z")) invece che nell'altro modo.
Prova a cambiare il nome della variabile animator, perchè ricordo che "animator" è anche una variabile che ha il valore dell' Animator a cui è attaccato lo script. Prova e facci sapere Big Grin
AHHHH ecco hai messo una parentesi in meno nel controllo dell'input :
if (Input.GetKey(KeyCode.Z)

mentre devi fare cosi

if (Input.GetKey(KeyCode.Z))

in più hai sbagliato le parentesti graffe ecco il codice aggiustato :

Codice:
using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {
public Animator animator;
public float horizontalMove;
public float speed;
private bool walking;



// Update is called once per frame
    void Update ()
    {
    
    if (Input.GetKey(KeyCode.Z))
        animator.SetTrigger("attacco");

    if (Input.GetAxis ("Horizontal") != 0)
    {
        animator.SetBool ("walking", true);
        transform.Translate (Vector3.right * Time.deltaTime * speed);
    }
    
    if (Input.GetAxis ("Horizontal") < 0)
    {
        transform.rotation = Quaternion.Euler (0, 180, 0);
    }
    
    if (Input.GetAxis ("Horizontal") > 0)
    {
        transform.rotation = Quaternion.Euler (0, 0, 0);
    }
    else
    {
        animator.SetBool ("walking", false);
    }
    
  }
}
Funziona!! Grazie mille black! Purtroppo non conoscendo la programmazione di questi errori ne faccio spesso..mi baso solo sui tutorial Tongue
Di nulla Big Grin