Prendere e Tirare " Palla " - Versione stampabile +- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi) +-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia) +--- Forum: Richieste di Aiuto per Unity 3D (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-Unity-3D) +--- Discussione: Prendere e Tirare " Palla " (/thread-Prendere-e-Tirare-Palla) |
Prendere e Tirare " Palla " - Master-Antonio - 20-02-2015 Salve ragazzi, dopo varie idee , sono arrivata alla definitiva e sto sviluppando il mio primo gioco 2D con UNITY. E' il mio primo gioco con esso, prima usavo il Cry Engine. Il gioco che sto facendo è formato da Sprite, Box Collider, Circle Collider e RigidBody. Ho un problema con uno script. Devo fare uno script che prende un oggetto chiamato palla lo posiziona a destra e a sinistra del personaggio a seconda della sua direzione e poi premendo un tasto il personaggio tira la palla. Come teoria ho pensato di mettere un Trigger al Personaggio , quando il Trigger tocca la palla, al personaggio viene aggiunta essa, il problema e che non so aggiungere sta ***** di " palla ". Mi sto dannando. Ho provato vari metodi. L'ultimo è questo. public class Grab : MonoBehaviour { private GameObject player; void OnTriggerEnter2D (Collider2D Ball) { if (GameObject.FindWithTag ("Ball")) GetComponent<Ball> (); } } Siccome GetComponent prende solo GameObject, ho creato un file chiama Ball con semplicemente questo e assegnato alla palla. public class Ball : MonoBehaviour { private GameObject ball; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } Mi aiutate per piacere? RE: Prendere e Tirare " Palla " - Master-Antonio - 20-02-2015 Adesso finalmente sono riuscito ad agganciarlo al personaggio. Era la ***** di variabile che doveva essere pubblica, quella *****. XD XD. Ho il problema che non lo segue, rimane li. Come faccio? Devo posizionare la palla a destra o sinistra del personaggio a seconda della sua direzione. Questo accade perchè la palla ha un RigidBody2D , precisamente è formata in questo modo. 1) http://i.gyazo.com/4f894e3dc8ed9bb5f3b7cff11f50956a.png 2) http://i.gyazo.com/b23dd176a6fada82efdaecdf632ebda6.png UPDATE : Ho cercato di risolvere in questo modo. 1) http://i.gyazo.com/99f89f0441f12d10bb85943e3283f837.png 2) http://i.gyazo.com/142f93048578c0cc9af1327206345fbe.png Ora il primo problema è risolto, ma è uscito un altro problema. Unity assegna con lo Script la Palla solo con Circle Collider al Personaggio, ma rimane la Palla con RigidBody2D e Circle Collider, e quando tocco questo oggetto ora invisibile sono sottoposto alla sua massa e alla sua fisica. P.S E non sto pensando ancora a lanciare la palla. Credo che per tirare la palla, deve avere un RigidBody2D. Quindi sarà un altro problema. Ma sto andando a STEP. Ok, penso di aver risolto il problema, in questo modo Code (CSharp): public class Grab : MonoBehaviour { public GameObject player; public GameObject BallDestroyed; void OnTriggerEnter2D (Collider2D other) { if (other.CompareTag ("Ball")) { other.transform.parent = player.transform; Destroy (BallDestroyed); // might want to set ball rigidbody to kinematic here also } } } Ora la palla con il RigidBody2D e Circle Collider viene eliminato quando prendo la Palla. Ora devo metterla a destra e la sinistra del personaggio. Come faccio? RE: Prendere e Tirare " Palla " - Ardito - 20-02-2015 Sei sottoposto alla fisica dell'oggetto genitore, per evitare questo problema si crea una variabile, dopo ti memorizzi la posizione della palla e da li fai tutti i calcoli necessari.. Crea una variabile di questo tipo: Public Transform Ball; Nella funzione Start o Awake (Dipende quale usi) inserisci questa piccola istruzione: Ball = Gameobject.Find("Palla").transform; (In questo modo abbiamo assegnato alla variabile Ball, l'oggetto nella scena che si chiama "Palla") Dopo di che vai Update e inserisci questa istruzione: transform.position = Ball.transform.position; (In questo modo l'oggetto in cui è attaccato questo script avrà coordinate nella scena pari a quelle di Ball) Per mettere un oggetto accanto ad un altro puoi fare così: transform.position = Ball.transform.position + new Vector3(5,0,0); (In questo modo questo oggetto avrà le stesse coordinate di Ball ma sarà traslato di 5 nell'asse X) Basta mettere un if che controlla la rotazione e hai finito ^^ Questo è un piccolo esempio che puoi gestirti molto facilmente.. RE: Prendere e Tirare " Palla " - Master-Antonio - 22-02-2015 (20-02-2015, 03:46 PM)Ardito Ha scritto: Sei sottoposto alla fisica dell'oggetto genitore, per evitare questo problema si crea una variabile, dopo ti memorizzi la posizione della palla e da li fai tutti i calcoli necessari.. Ho risolto nello stesso giorno dopo 3-4 ore la creazione di questo Thread con un algoritmo ancora migliore. Si può chiudere. |