• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 2 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
Aiuto Script
#1
salve ragazzi,avrei bisogno di un aiuto per completare uno script,che ho preso da un Tutorial di un team di ragazzi che vuole finire un fps,che però non so se continueranno a farlo :/,comunque lo Script che ho preso da loro è questo:
using UnityEngine;
using System.Collections;

public class WeaponScript : MonoBehaviour {

public Set[] Weapons;
public Set currentweapons;

// Use this for initialization
void Start ()
{
currentweapon = Weapons[0];
CurrentWeapon.wepTrasform.animation.Play(currentWeapon.DrawAnim);
}
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButton(0))
{
Currentweapon.wepTrasform.animation.Play(currentWeapon.fireAnim);
}
if(Input.GetKey(keyCode.R))
{
CurrentWeapon.wepTrasform.Animation.Play(currentWeapons.reloadAnim);
}
}
}
[System.Serializable]
public class Weapon
{
public string name;
public Transform wepTrasform;
public string fireAnim, drawAnim, reloadAnim;
}


ma quando vado a far partire il gioco su unity per vedere se funziona tutto sulla console mi escono 7 errori:
-Assets/weapons2.cs(22,26): error CS1502: The best overloaded method match for `UnityEngine.Input.GetKey(string)' has some invalid arguments
-Assets/weapons2.cs(22,33): error CS0103: The name `keyCode' does not exist in the current context
-Assets/weapons2.cs(20,25): error CS0103: The name `Currentweapon' does not exist in the current context
-Assets/weapons2.cs(13,17): error CS0103: The name `CurrentWeapon' does not exist in the current context
-Assets/weapons2.cs(12,17): error CS0103: The name `currentweapon' does not exist in the current context
-Assets/weapons2.cs(22,26): error CS1503: Argument `#1' cannot convert `object' expression to type `string'
-Assets/weapons2.cs(24,25): error CS0103: The name `CurrentWeapon' does not exist in the current context

allora ho provato a modificarlo aggiungendo "public static Weapons",magari risolvevo qualcosa ed ecco il risultato:
2)
using UnityEngine;
using System.Collections;

public class WeaponScript : MonoBehaviour
{

public Weapons[] Weapons ;
public Weapons Currentweapons ;
public static Weapons

// Use this for initialization
void Start ()
{
Currentweapon = Weapons[0];
Currentweapon.wepTrasform.animation.Play(currentWeapon.DrawAnim);
}
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButton(0))
{
Currentweapon.wepTrasform.animation.Play(currentWeapon.fireAnim);
}
if(Input.GetKey(keyCode.R))
{
Currentweapon.wepTrasform.Animation.Play(currentWeapons.reloadAnim);
}
}
}
[System.Serializable]
public class Weapon
{
public string name;
public Transform wepTrasform;
public string fireAnim,drawAnim,reloadAnim;
}

non funziona lo stesso,
però adesso mi da solo un errore:
-Assets/WeaponScript.cs(12,20): error CS1519: Unexpected symbol `void' in class, struct, or interface member declaration

ormai mi sono fermato 4 giorni su questo script e non so più cosa fare :/.spero che mi potrete aiutare Big Grin
 
Rispondi
#2
Ecco lo ho aggiustato così dovrebbe funzionare

Codice:
using UnityEngine;
using System.Collections;

public class WeaponScript : MonoBehaviour {

public Weapon[] Weapons;
public Weapon Currentweapons;

    void Start ()
    {
        Currentweapon = Weapons[0];
        CurrentWeapon.wepTrasform.animation.Play(CurrentWeapon.DrawAnim);
    }

    void Update ()
    {
        if (Input.GetMouseButton(0))
        {
            Currentweapon.wepTrasform.animation.Play(currentWeapon.fireAnim);
        }
        if(Input.GetKey(KeyCode.R))
        {
            CurrentWeapon.wepTrasform.animation.Play(currentWeapon.reloadAnim);
        }
    }
}

[System.Serializable]
public class Weapon
{
    public string name;
    public Transform wepTrasform;
    public string fireAnim, drawAnim, reloadAnim;
}

Molte volte sbaglia nelle maiuscole e minuscole, per esempio la variabile si chiama : "CurrentWeapon" e tu la richiamavi scrivendo currentWeapon
 
Rispondi
#3
Grazie mille,questa cosa delle maiuscole/minuscole me ne ero gia accorto e avevo anche risolto (parzialmente),però adesso ripensando a quello che mi hai detto ho controllato meglio e ho notato altri errori simili alla fine.grazie mille xD
 
Rispondi
#4
Di nulla figurati Wink
 
Rispondi
#5
"The animation state Anim could not be played because it couldn't be found!
Please attach an animation clip with the name 'Anim' or call this function only for existing animations.
UnityEngine.AnimationTonguelay(String)
WeaponScript:Update() (at Assets/WeaponScript.cs:19)"

ragazzi riuscite a spiegarmelo?Io l'animazione cell'ho,l'ho anche inserita nell'arma,sia l'animazione start che quella di ricarica mi funzionano,non capisco perchè non mi funziona questa :/ (è l'animazione di sparo)
 
Rispondi
#6
assicurati di aver assegnato giustamente il transform che contiene il componente "Animation" e controlla bene il nome dell'animazione
 
Rispondi
#7
grazie mille,ho risolto Smile

però è nato un'altro problema AngryAngryAngryConfused,riguarda un'altro script che ha come base quello dell'altra volta....eccolo:

Codice:
using UnityEngine;
using System.Collections;

public class WeaponScript : MonoBehaviour
{    
    public Weapon[] Weapons;
    public Weapon Currentweapons;
    public float AimSpeed;

    [HideInInspector]
    private Vector3 normalPosition;
    private float endFire;
        
    void Start ()
    {
        EnableWep(0);
    }

    void Update ()
    {
        if (Input.GetMouseButton(0))
        {
            Fire();
        }
        if (Input.GetMouseButton(1))
        {
                Aim();
        }
        else
            {
                Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition, normalPosition, Time.deltaTime * AimSpeed);
            }
                if(Input.GetKey(KeyCode.R))
        {
                Currentweapons.wepTrasform.animation.Play(Currentweapons.ReloadAnim);
        }
    }
    void EnableWep(int nun)
    {
        Currentweapons = Weapons[nun];
        Currentweapons.wepTrasform.animation.Play(Currentweapons.DrawAnim);
        normalPosition = Currentweapons.weptrasform.LocalPosition;
    }
    void Fire()
    {
        if (endFire < Time.time)
        {    
            endfire = Time.time + Currentweapons.fireRate;
            if (Currentweapons.wepTrasform.animation.isPlaying(Currentweapons.FireAnim))
            {    
                Currentweapons.wepTrasform.animqtion.Rewind(Currentweapons.FireAnim);
            }
            Currentweapons.wepTrasform.animation.Play(Currentweapons.FireAnim);
        }
    }
    void Aim()
    {
        Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition,new Vector3(Currentweapons.positionzoomed, Currentweapons.positionzoomed, Currentweapons.positionzoomed));
    }

}


[System.Serializable]
    public class Weapons
    {
    public string name;
    public Transform wepTrasform;
    public string DrawAnim, FireAnim, ReloadAnim;
    public int Damage;
    public float PositionXzoomed , PositionYzoomed , PositionZzoomed;
    public float FireRate;
    }

oggi ho controllato un milone di volte se ho sbagliato qualcosa...lo script dovrebbe essere scritto così...maiuscole/minuscole e gli spazi penso che siano tutti messi bene.

ecco l'erroe:
Assets/Scripts/WeaponScript.cs(6,16): error CS0246: The type or namespace name `Weapon' could not be found. Are you missing a using directive or an assembly reference?

Assets/Scripts/WeaponScript.cs(7,16): error CS0246: The type or namespace name `Weapon' could not be found. Are you missing a using directive or an assembly reference?
 
Rispondi
#8
(04-09-2014, 11:16 AM)LatinMan Ha scritto: grazie mille,ho risolto Smile

però è nato un'altro problema AngryAngryAngryConfused,riguarda un'altro script che ha come base quello dell'altra volta....eccolo:

Codice:
using UnityEngine;
using System.Collections;

public class WeaponScript : MonoBehaviour
{    
    public Weapon[] Weapons;
    public Weapon Currentweapons;
    public float AimSpeed;

    [HideInInspector]
    private Vector3 normalPosition;
    private float endFire;
        
    void Start ()
    {
        EnableWep(0);
    }

    void Update ()
    {
        if (Input.GetMouseButton(0))
        {
            Fire();
        }
        if (Input.GetMouseButton(1))
        {
                Aim();
        }
        else
            {
                Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition, normalPosition, Time.deltaTime * AimSpeed);
            }
                if(Input.GetKey(KeyCode.R))
        {
                Currentweapons.wepTrasform.animation.Play(Currentweapons.ReloadAnim);
        }
    }
    void EnableWep(int nun)
    {
        Currentweapons = Weapons[nun];
        Currentweapons.wepTrasform.animation.Play(Currentweapons.DrawAnim);
        normalPosition = Currentweapons.weptrasform.LocalPosition;
    }
    void Fire()
    {
        if (endFire < Time.time)
        {    
            endfire = Time.time + Currentweapons.fireRate;
            if (Currentweapons.wepTrasform.animation.isPlaying(Currentweapons.FireAnim))
            {    
                Currentweapons.wepTrasform.animqtion.Rewind(Currentweapons.FireAnim);
            }
            Currentweapons.wepTrasform.animation.Play(Currentweapons.FireAnim);
        }
    }
    void Aim()
    {
        Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition,new Vector3(Currentweapons.positionzoomed, Currentweapons.positionzoomed, Currentweapons.positionzoomed));
    }

}


[System.Serializable]
    public class Weapons
    {
    public string name;
    public Transform wepTrasform;
    public string DrawAnim, FireAnim, ReloadAnim;
    public int Damage;
    public float PositionXzoomed , PositionYzoomed , PositionZzoomed;
    public float FireRate;
    }

oggi ho controllato un milone di volte se ho sbagliato qualcosa...lo script dovrebbe essere scritto così...maiuscole/minuscole e gli spazi penso che siano tutti messi bene.

ecco l'erroe:
Assets/Scripts/WeaponScript.cs(6,16): error CS0246: The type or namespace name `Weapon' could not be found. Are you missing a using directive or an assembly reference?

Assets/Scripts/WeaponScript.cs(7,16): error CS0246: The type or namespace name `Weapon' could not be found. Are you missing a using directive or an assembly reference?

Prova così, praticamente la classe Weapon che avevi creato la hai chiamata "Weapons", mentre la variabile si chiamava Weapon. Ho soltanto cacciato la "s" dal nome della classe,quindi da "Weapons" lo rinominata in "Weapon", quando tu crei la variabile "Weapon" ti riferisci alla classe creata in precedenza quindi i nomi devono coincidere, spero d'essere stato d'aiuto Smile.
Codice:
using UnityEngine;
using System.Collections;

public class WeaponScript : MonoBehaviour
{    
    public Weapon[] Weapons;
    public Weapon Currentweapons;
    public float AimSpeed;

    [HideInInspector]
    private Vector3 normalPosition;
    private float endFire;
        
    void Start ()
    {
        EnableWep(0);
    }

    void Update ()
    {
        if (Input.GetMouseButton(0))
        {
            Fire();
        }
        if (Input.GetMouseButton(1))
        {
                Aim();
        }
        else
            {
                Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition, normalPosition, Time.deltaTime * AimSpeed);
            }
                if(Input.GetKey(KeyCode.R))
        {
                Currentweapons.wepTrasform.animation.Play(Currentweapons.ReloadAnim);
        }
    }
    void EnableWep(int nun)
    {
        Currentweapons = Weapons[nun];
        Currentweapons.wepTrasform.animation.Play(Currentweapons.DrawAnim);
        normalPosition = Currentweapons.weptrasform.LocalPosition;
    }
    void Fire()
    {
        if (endFire < Time.time)
        {    
            endfire = Time.time + Currentweapons.fireRate;
            if (Currentweapons.wepTrasform.animation.isPlaying(Currentweapons.FireAnim))
            {    
                Currentweapons.wepTrasform.animqtion.Rewind(Currentweapons.FireAnim);
            }
            Currentweapons.wepTrasform.animation.Play(Currentweapons.FireAnim);
        }
    }
    void Aim()
    {
        Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition,new Vector3(Currentweapons.positionzoomed, Currentweapons.positionzoomed, Currentweapons.positionzoomed));
    }

}


[System.Serializable]
    public class Weapon
    {
    public string name;
    public Transform wepTrasform;
    public string DrawAnim, FireAnim, ReloadAnim;
    public int Damage;
    public float PositionXzoomed , PositionYzoomed , PositionZzoomed;
    public float FireRate;
    }
 
Rispondi
#9
(04-09-2014, 12:53 PM)Blackg96 Ha scritto: Prova così, praticamente la classe Weapon che avevi creato la hai chiamata "Weapons", mentre la variabile si chiamava Weapon. Ho soltanto cacciato la "s" dal nome della classe,quindi da "Weapons" lo rinominata in "Weapon", quando tu crei la variabile "Weapon" ti riferisci alla classe creata in precedenza quindi i nomi devono coincidere, spero d'essere stato d'aiuto Smile.

questa volta niente :/,facendo così mi escono ben 11 errori:
-Assets/Scripts/WeaponScript.cs(58,141): error CS1061: Type `Weapon' does not contain a definition for `positionzoomed' and no extension method `positionzoomed' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(58,172): error CS1061: Type `Weapon' does not contain a definition for `positionzoomed' and no extension method `positionzoomed' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(58,203): error CS1061: Type `Weapon' does not contain a definition for `positionzoomed' and no extension method `positionzoomed' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(58,218): error CS1502: The best overloaded method match for `UnityEngine.Vector3.Vector3(float, float, float)' has some invalid arguments
-Assets/Scripts/WeaponScript.cs(58,218): error CS1503: Argument `#1' cannot convert `object' expression to type `float'
-Assets/Scripts/WeaponScript.cs(58,68): error CS1501: No overload for method `Lerp' takes `2' arguments
-Assets/Scripts/WeaponScript.cs(51,60): error CS1061: Type `UnityEngine.Transform' does not contain a definition for `animqtion' and no extension method `animqtion' of type `UnityEngine.Transform' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(49,66): error CS1955: The member `UnityEngine.Animation.isPlaying' cannot be used as method or delegate
-Assets/Scripts/WeaponScript.cs(48,25): error CS0103: The name `endfire' does not exist in the current context
-Assets/Scripts/WeaponScript.cs(48,62): error CS1061: Type `Weapon' does not contain a definition for `fireRate' and no extension method `fireRate' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(42,49): error CS1061: Type `Weapon' does not contain a definition for `weptrasform' and no extension method `weptrasform' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
 
Rispondi
#10
(04-09-2014, 04:04 PM)LatinMan Ha scritto:
(04-09-2014, 12:53 PM)Blackg96 Ha scritto: Prova così, praticamente la classe Weapon che avevi creato la hai chiamata "Weapons", mentre la variabile si chiamava Weapon. Ho soltanto cacciato la "s" dal nome della classe,quindi da "Weapons" lo rinominata in "Weapon", quando tu crei la variabile "Weapon" ti riferisci alla classe creata in precedenza quindi i nomi devono coincidere, spero d'essere stato d'aiuto Smile.

questa volta niente :/,facendo così mi escono ben 11 errori:
-Assets/Scripts/WeaponScript.cs(58,141): error CS1061: Type `Weapon' does not contain a definition for `positionzoomed' and no extension method `positionzoomed' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(58,172): error CS1061: Type `Weapon' does not contain a definition for `positionzoomed' and no extension method `positionzoomed' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(58,203): error CS1061: Type `Weapon' does not contain a definition for `positionzoomed' and no extension method `positionzoomed' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(58,218): error CS1502: The best overloaded method match for `UnityEngine.Vector3.Vector3(float, float, float)' has some invalid arguments
-Assets/Scripts/WeaponScript.cs(58,218): error CS1503: Argument `#1' cannot convert `object' expression to type `float'
-Assets/Scripts/WeaponScript.cs(58,68): error CS1501: No overload for method `Lerp' takes `2' arguments
-Assets/Scripts/WeaponScript.cs(51,60): error CS1061: Type `UnityEngine.Transform' does not contain a definition for `animqtion' and no extension method `animqtion' of type `UnityEngine.Transform' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(49,66): error CS1955: The member `UnityEngine.Animation.isPlaying' cannot be used as method or delegate
-Assets/Scripts/WeaponScript.cs(48,25): error CS0103: The name `endfire' does not exist in the current context
-Assets/Scripts/WeaponScript.cs(48,62): error CS1061: Type `Weapon' does not contain a definition for `fireRate' and no extension method `fireRate' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)
-Assets/Scripts/WeaponScript.cs(42,49): error CS1061: Type `Weapon' does not contain a definition for `weptrasform' and no extension method `weptrasform' of type `Weapon' could be found (are you missing a using directive or an assembly reference?)

Ho rivisto lo script non posso correggerlo tutto completamente perchè ci sono troppi errore guarda bene le maiuscole e minuscole, cioè tu hai scritto
Codice:
endfire = Time.time + Currentweapons.fireRate;

Mentre nella classe Weapon il nome della variabile è FireRate.

Poi altri errori che hai fatto è questo :
Codice:
Currentweapons.wepTrasform.localPosition = Vector3.Lerp(Currentweapons.wepTrasform.localPosition,new Vector3(Currentweapons.positionzoomed, Currentweapons.positionzoomed, Currentweapons.positionzoomed));

Mentre nella classe Weapon si chiamano : PositionXzoomed, PositionYzoomed, PositionZzoomed, tu nel new Vector3 devi mettere le tre assi ovvero x, y, z quindi new Vector3(PositionXzoomed, PositionYzoomed, PositionZzoomed)

Poi hai scritto LocalPosition mentre è localPosition, hai scritto trasform mentre è transform, controlla bene tutto studiati bene la programmazione perchè non puoi continuare il tuo progetto chiedendo di quà e di là, te lo dico per consiglio Big Grin
 
Rispondi
#11
Il mio consiglio e di studiarti un po di c# prima e poi passi ad unity...poi usa visual studio for unity cosi l autocompilazione ti aiuta ed eviti questi piccoli errori perche monoDev fa schifo Wink
 
Rispondi
#12
(04-09-2014, 06:17 PM)Blackg96 Ha scritto: Poi hai scritto LocalPosition mentre è localPosition, hai scritto trasform mentre è transform, controlla bene tutto studiati bene la programmazione perchè non puoi continuare il tuo progetto chiedendo di quà e di là, te lo dico per consiglio Big Grin

ahhaha,grazie del consiglio,lo seguirò di sicuro...solo che mi da urto che lo cose semplici mi vengono bene,mentre quelle a cui bisogna prestare più attenzione non mi vengono mai al primo colpo Dodgy

(04-09-2014, 06:46 PM)WilSoft90 Ha scritto: Il mio consiglio e di studiarti un po di c# prima e poi passi ad unity...poi usa visual studio for unity cosi l autocompilazione ti aiuta ed eviti questi piccoli errori perche monoDev fa schifo Wink
grazie del consiglio,che siti/video mi consigli per studiare le basi del c#,perchè a me mancano per lo più quelle....mi arrangio un po con le memorie che ho di html e java (almeno mi sembra che era java,mi confondo sempre con javascript Confused) che più o meno mi indirizzano ma ovviamente non sono la stessa cosa


comunque grazie ragazzi non vedo l'ora di migliorare e di poter postare qualche mio progetto Big GrinCool
 
Rispondi
#13
Sei ha una base del java ti troverai piu o meno bene nel c#, ma se sai html e javascript, è come riniziare da 0, ripeto "è come".
Comunque per le basi del c# ti consiglio o FCamuso oppure TheDig fanno ottimi tutorial e che spiegano molto bene le cose, io per il c# ho seguito TheDig perchè FCamuso mi annoia perchè parla troppo ahaahah comunque sono tutti e 2 bravi.
 
Rispondi
#14
Io ho seguito le lezioni di c# Del prof FCamuso su youtube per prima mi sono letto" java mattone dopo mattone" che pesa piu di un mattone xD java e c# sono molto simili...poi basta conoscerne 1 e sono tutti simili
 
Rispondi
#15
Si alla fine cambia quasi sempre la sintassi del codice, ma il succo è quello Big Grin
 
Rispondi
#16
blackg96,mi potresti postare il link di "TheDig"?non lo trovo :/
Fcamuso mi sembra davvero interessante,ho visto pure che ha fatto video tutorials su unity xD,non vedo l'ora di aver più tempo per guardarmi meglio i suo video Smile
 
Rispondi
#17
(06-09-2014, 03:19 PM)LatinMan Ha scritto: blackg96,mi potresti postare il link di "TheDig"?non lo trovo :/
Fcamuso mi sembra davvero interessante,ho visto pure che ha fatto video tutorials su unity xD,non vedo l'ora di aver più tempo per guardarmi meglio i suo video Smile

Ecco clicca Qui
 
Rispondi
  


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Aiuto script sparo gioco 2D fedekikko 4 616 22-04-2015, 03:31 PM
Ultimo messaggio: Blackg96
  Aiuto problema script per attacco fedekikko 13 1,040 22-04-2015, 11:14 AM
Ultimo messaggio: Blackg96
  Richiesta aiuto script per guidare macchina. davidecreatoreapp 8 931 27-03-2015, 11:56 AM
Ultimo messaggio: davidecreatoreapp
  Aiuto Script Tech98 5 681 25-04-2014, 11:45 PM
Ultimo messaggio: adriqueru99
  Unity 3d Aiuto script kaosmoda 5 957 07-12-2012, 12:30 PM
Ultimo messaggio: Exorcist

Vai al forum:


Browsing: 1 Ospite(i)