Orario: 18-05-2013, 15:56 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Impostare tempo di reload dell'objBullet
Autore Messaggio
faek
@#*§°

Messaggi: 1,284
Registrato: Nov 2009
Offline Offline
#1 Impostare tempo di reload dell'objBullet
0
salve a tutti Inchino
Ho un enorme problema da risolvere: alla pressione del tasto fire1, il mio character crea un objBullet, che esegue questo script:

Codice:
using UnityEngine;
using System.Collections;

public class BulletScript : MonoBehaviour {
    private float moveSpeed = 30f; // how fast the bullet moves
    private float timeSpentAlive; // how long the bullet has stayed alive for
    private GameObject objPlayer;
    private VariableScript ptrScriptVariable;

    // Use this for initialization
    void Start () {
        objPlayer = (GameObject) GameObject.FindWithTag ("Player");
        ptrScriptVariable = (VariableScript) objPlayer.GetComponent( typeof(VariableScript) );
    }

    // Update is called once per frame
    void Update () {
        timeSpentAlive += Time.deltaTime;
        if (timeSpentAlive > 1) // if we have been travelling for more than one second remove the bullet
        {
            removeMe();
        }
        // move the bullet
            transform.Translate(0, 0, moveSpeed * Time.deltaTime);
            transform.position = new Vector3(transform.position.x,0,transform.position.z); // because the bullet has a rigid body we don't want it moving off it's Y axis
    }
    void removeMe ()
    {
        Instantiate(ptrScriptVariable.parBulletHit, transform.position, Quaternion.identity );
        Destroy(gameObject);
    }
    void OnCollisionEnter(Collision Other)
    {
        if ( Other.gameObject.GetComponent( typeof(AIscript) ) != null && Other.gameObject != objPlayer ) // if we have hit a character and it is not the player
        {
            AIscript ptrScriptAI = (AIscript) Other.gameObject.GetComponent( typeof(AIscript) );
            ptrScriptAI.health -= 10;
            Instantiate(ptrScriptVariable.parAlienHit, transform.position, Quaternion.identity );
            removeMe();
        }
        removeMe(); // remove the bullet if it has hit something else apart from an enemy character
    }
}

Vorrei dire a questo script che ogni 30 proiettili sparati, l'arma si debba ricaricare in automatico, oppure premendo il tasto "R".

Grazie a tutti.
Ps.Se mi volete dare una mano con il mio progetto siete i benvenuti Fermose

Fabio "faek" Paccosi
Big Brain Games
Follow me on Twitter
19-07-2010 8:51
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
johnnyfreak
Indieveloper

Messaggi: 1,482
Registrato: Sep 2009
Offline Offline
#2 RE: Impostare tempo di reload dell'objBullet
0
Io ho fatto una cosa del genere per il mio progetto.
Non so come funziona in unity però concettualmente il tempo di reload è quello dell'arma non del proiettile (sempre che per te queste due cose non coincidano).

Io ho messo un tempo di "reload" e un tempo di "reshoot" se a questi aggiungi un intero che è il valore massimo dei proiettili, il gioco è fatto.

Se non ti è chiaro o vuoi maggiori dettagli, scrivi pure.

Simone Zenzaro
[Twitter|Linkedin|Web]
(Questo messaggio è stato modificato l'ultima volta il: 19-07-2010 19:57 da johnnyfreak.)
19-07-2010 19:56
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
faek
@#*§°

Messaggi: 1,284
Registrato: Nov 2009
Offline Offline
#3 RE: Impostare tempo di reload dell'objBullet
0
(19-07-2010 19:56)johnnyfreak ha scritto:  Io ho fatto una cosa del genere per il mio progetto.
Non so come funziona in unity però concettualmente il tempo di reload è quello dell'arma non del proiettile (sempre che per te queste due cose non coincidano).

Io ho messo un tempo di "reload" e un tempo di "reshoot" se a questi aggiungi un intero che è il valore massimo dei proiettili, il gioco è fatto.

Se non ti è chiaro o vuoi maggiori dettagli, scrivi pure.

per adesso va bene, grazie!!!

Fabio "faek" Paccosi
Big Brain Games
Follow me on Twitter
19-07-2010 20:18
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tano
Ninja Scientist

Messaggi: 1,408
Registrato: Nov 2008
Offline Offline
#4 RE: Impostare tempo di reload dell'objBullet
0
Scusami ma non è il proiettile che deve sapere se è il trentesimo. Devi avere un "qualcosa" esterno che controlla tutto e ti permette di sparare o meno. Una sorta di WeaponController. Ovvero una classe che si occupa di tener traccia di quanti proiettili ti rimangono e che arma stai usando..

Qualcuno ha parlato di Strategy Pattern? Sorriso (E' utilissimo in questo caso!)

"..Credevamo di aver successo un giorno, al teatro delle commedie, con due soli spettatori.." Takeshi Kitano.

[Immagine: linkedin-icon.png]
Gaetano Lenoci
Studio Leaves
Coward Knight
20-07-2010 8:31
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
faek
@#*§°

Messaggi: 1,284
Registrato: Nov 2009
Offline Offline
#5 RE: Impostare tempo di reload dell'objBullet
0
(20-07-2010 8:31)Tano ha scritto:  Scusami ma non è il proiettile che deve sapere se è il trentesimo. Devi avere un "qualcosa" esterno che controlla tutto e ti permette di sparare o meno. Una sorta di WeaponController. Ovvero una classe che si occupa di tener traccia di quanti proiettili ti rimangono e che arma stai usando..

Qualcuno ha parlato di Strategy Pattern? Sorriso (E' utilissimo in questo caso!)

si, infatti sto riscrivendo alcuni script Occhiolino
Scusate se dico cosa stupide, ma è la prima volta che uso Unity, ma devo dire che mi sto trovando benissimo Zizi

Fabio "faek" Paccosi
Big Brain Games
Follow me on Twitter
20-07-2010 11:20
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tano
Ninja Scientist

Messaggi: 1,408
Registrato: Nov 2008
Offline Offline
#6 RE: Impostare tempo di reload dell'objBullet
0
Non scrivi cose stupide.. L'importante è che tu raggiunga i tuoi obiettivi! Poi chiedi pure, ti risponderò nelle mie possibilità visto che Unity lo conosco abbastanza bene.

"..Credevamo di aver successo un giorno, al teatro delle commedie, con due soli spettatori.." Takeshi Kitano.

[Immagine: linkedin-icon.png]
Gaetano Lenoci
Studio Leaves
Coward Knight
20-07-2010 11:28
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
faek
@#*§°

Messaggi: 1,284
Registrato: Nov 2009
Offline Offline
#7 RE: Impostare tempo di reload dell'objBullet
0
(20-07-2010 11:28)Tano ha scritto:  Non scrivi cose stupide.. L'importante è che tu raggiunga i tuoi obiettivi! Poi chiedi pure, ti risponderò nelle mie possibilità visto che Unity lo conosco abbastanza bene.

grazie!!

ecco una prima domanda XD
Come mai, una volta creato il livello, il mio personaggio scivola verso l'infinito e oltre nonostante abbia attivato il rigid body sia del personaggio che del livello (al livello ho levato la gravità)?

Fabio "faek" Paccosi
Big Brain Games
Follow me on Twitter
20-07-2010 11:33
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tano
Ninja Scientist

Messaggi: 1,408
Registrato: Nov 2008
Offline Offline
#8 RE: Impostare tempo di reload dell'objBullet
0
Sei sicuro che non ci sia una forza costante applicata a quell'oggetto? Purtroppo la fisica in Unity l'ho vista poco (cazzo che fail Sorriso). Tu basi tutti gli spostamenti su applicazioni di forze o su semplici translate? Visto che stai usando la fisica, penso la prima.. Quindi controlla che non ci sia nessuna forza costante applicata al corpo. Prova inoltre a creare un altro corpo e metterlo vicino, vedi se anche questo subisce questa forza.. Sisi

"..Credevamo di aver successo un giorno, al teatro delle commedie, con due soli spettatori.." Takeshi Kitano.

[Immagine: linkedin-icon.png]
Gaetano Lenoci
Studio Leaves
Coward Knight
20-07-2010 11:52
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
faek
@#*§°

Messaggi: 1,284
Registrato: Nov 2009
Offline Offline
#9 RE: Impostare tempo di reload dell'objBullet
0
(20-07-2010 11:52)Tano ha scritto:  Sei sicuro che non ci sia una forza costante applicata a quell'oggetto? Purtroppo la fisica in Unity l'ho vista poco (cazzo che fail Sorriso). Tu basi tutti gli spostamenti su applicazioni di forze o su semplici translate? Visto che stai usando la fisica, penso la prima.. Quindi controlla che non ci sia nessuna forza costante applicata al corpo. Prova inoltre a creare un altro corpo e metterlo vicino, vedi se anche questo subisce questa forza.. Sisi

applico la forza Zizi
ora provo, grazie Occhiolino

Fabio "faek" Paccosi
Big Brain Games
Follow me on Twitter
20-07-2010 12:02
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Corralx
Graph Lover

Messaggi: 810
Registrato: Jul 2010
Offline Offline
#10 RE: Impostare tempo di reload dell'objBullet
0
Probabilmente perchè in Unity, RigidBody e Collider sono 2 entità diverse.
Il rigidbody ti garantisce che sia gestito dal motore fisico, ma senza collider non ha interazioni con gli altri oggetti.
Aggiungi i Collider e non dovrebbe più passare attraverso i modelli.

Matteo "Corralx" Bertello
20-07-2010 12:32
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
faek
@#*§°

Messaggi: 1,284
Registrato: Nov 2009
Offline Offline
#11 RE: Impostare tempo di reload dell'objBullet
0
(20-07-2010 12:32)Corralx ha scritto:  Probabilmente perchè in Unity, RigidBody e Collider sono 2 entità diverse.
Il rigidbody ti garantisce che sia gestito dal motore fisico, ma senza collider non ha interazioni con gli altri oggetti.
Aggiungi i Collider e non dovrebbe più passare attraverso i modelli.

ok, grazie Occhiolino

Fabio "faek" Paccosi
Big Brain Games
Follow me on Twitter
20-07-2010 18:02
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: