Problemi di assi su Unity - 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: Problemi di assi su Unity (/thread-Problemi-di-assi-su-Unity) |
Problemi di assi su Unity - alessiobb3b - 10-01-2016 Carissimi, ho un piccolo grande problema. Allora su Unity mi capita spesso che quando metto due oggetti nelle stesse coordinate appaiono in due posizioni diverse(Ovviamente oggetti non imparentati fra loro). Il che è fastidioso, per esempio provando ad usare un gameobject vuoto come spawn di un proiettile sulla bocca della canna di un fucile il proiettile viene istanziato a 10 - 20m traslato in tutti e tre gli assi? Qualcuno mi può aiutare? Problemi di assi su Unity - davidecreatoreapp - 10-01-2016 Possibile che il proiettile abbia un pivot spostato (e quindi non impostato al centro della mesh)? Oppure è un problema tra posizioni locali (quindi relative al parent) e globali? RE: Problemi di assi su Unity - alessiobb3b - 10-01-2016 io credo sia globale perchè oggetti con stesse coordinate hanno posizioni diverse non penso sia un problema della mesh perchè qualche volta ha funzionato che spawnasse giusto poi niente sempre sbagliato e non so cosa possa creare questo problema Problemi di assi su Unity - davidecreatoreapp - 10-01-2016 Per istanziare il proiettile usi come coordinate spawner.transform.position (in cui spawner deve essere il GameObject da dove partirà il proiettile, quindi diciamo che potrebbe essere un gameobject vuoto alla fine della canna del fucile) ? RE: Problemi di assi su Unity - WilSoft90 - 11-01-2016 Puoi postare il codice in cui instanzi il proiettile? RE: Problemi di assi su Unity - alessiobb3b - 12-01-2016 Si allora vi mando il codice. Si Davi esattamente using UnityEngine; using System.Collections; using UnityEngine.UI; public class Spar_Caspiterina : MonoBehaviour { public Rigidbody Bullet; public Rigidbody Boss , Rel_; public Transform Boss_spawn; public Transform Spawn; private int CurrentCartridge = 8; private int CurrentAmmo = 32; private int MaxCartridge = 8; private Animation Anima; public string Fire , Rel , End_Fire; public GameObject Bull; public bool Ended; public AudioClip Reload; public Transform Aim_Pos , Normal_pos; public float A , B; public ParticleSystem Fires; public GameObject Garand; private Rigidbody BulletInstance; private Rigidbody BossInstance; private Rigidbody RelInstance; void Start () { Fires.Stop (); } // Update is called once per frame void Update () { //Aim (); Fuoco(); Ricarica (); } void Aim() { if (Input.GetMouseButton (1)) { Garand.transform.localPosition = Vector3.Lerp (transform.localPosition, Aim_Pos.position, 0.1f); Garand.transform.localRotation = Quaternion.Slerp (transform.localRotation, Aim_Pos.rotation, 0.1f); } else { Garand.transform.localPosition = Vector3.Lerp (transform.localPosition, Normal_pos.position, 0.1f); Garand.transform.localRotation = Quaternion.Slerp (transform.localRotation, Normal_pos.rotation, 0.1f); } } void Fuoco() { if (Input.GetMouseButtonDown (0) && CurrentCartridge > 0 && Garand.GetComponent<Animation>().isPlaying==false) {PlayerPrefs.SetInt("Fire" , 1); Fires.Play(); CurrentCartridge --; BulletInstance = Instantiate(Bullet, Spawn.position, Spawn.rotation) as Rigidbody; BulletInstance.AddForce(Spawn.forward * 5000); print(BulletInstance.position.ToString()); BossInstance = Instantiate(Boss, Boss_spawn.position, Boss_spawn.rotation) as Rigidbody; BossInstance.AddForce(Boss_spawn.forward * 5); print(BossInstance.position.ToString()); Anima = Garand.GetComponent<Animation>(); Anima.Play(Fire); StartCoroutine(DSTR()); } if (Input.GetMouseButtonDown (0) && CurrentCartridge == 0 && Ended == false) { PlayerPrefs.SetInt("Fire" , 0); Ended = true; Anima = Garand.GetComponent<Animation>(); Anima.Play(End_Fire); BossInstance = Instantiate(Boss, Boss_spawn.position, Boss_spawn.rotation) as Rigidbody; BossInstance.AddForce(Boss_spawn.forward * 5); StartCoroutine(Spwn()); } } void Ricarica() { if (Input.GetKeyDown(KeyCode.R) && CurrentCartridge == 0 && CurrentAmmo >0) { Garand.GetComponent<AudioSource>().clip = Reload; Garand.GetComponent<AudioSource>().Play(); Anima = Garand.GetComponent<Animation>(); Anima.Play(Rel); Ended = false; if(CurrentAmmo < (MaxCartridge - CurrentCartridge)) { CurrentCartridge = CurrentCartridge + CurrentAmmo; CurrentAmmo = 0; } else { CurrentAmmo = (CurrentCartridge - MaxCartridge) + CurrentAmmo; CurrentCartridge = MaxCartridge; } } } IEnumerator Spwn() { yield return new WaitForSeconds (0.9f); RelInstance = Instantiate(Rel_, Boss_spawn.position, Boss_spawn.rotation) as Rigidbody; RelInstance.AddForce(Boss_spawn.forward * 5); } void OnGUI() { GUI.Label(new Rect(A, B, 200, 190) , CurrentCartridge.ToString() + " | " + CurrentAmmo.ToString()); } IEnumerator DSTR() { yield return new WaitForSeconds(5); Destroy(BulletInstance); Destroy(BossInstance); } } RE: Problemi di assi su Unity - WilSoft90 - 12-01-2016 Prova con spawn.localrotation comunque per i proiettili e consigliato usare dei raycast invece di instanziare gameobject RE: Problemi di assi su Unity - alessiobb3b - 12-01-2016 Ok grazie mille provo e ti faccio sapere RE: Problemi di assi su Unity - encelo - 12-01-2016 Senza indentazione la leggibilità muore, così come gli occhi di chi cerca di leggere. Perché non ci riprovi, magari adoperando l'apposito tag code? Codice: int main() RE: Problemi di assi su Unity - alessiobb3b - 12-01-2016 Ah Ok Scusa :p Codice: using UnityEngine; |