Jump to content
Unity Insider Forum

Isometric Camera - Kugel fliegt an Mausklick vorbei


Pongk

Recommended Posts

Hallo ich hab ein Problem bei meinem Script.

Ich habe eine isometrische Kamera und kann mit der Figur schon zum Mausklick laufen.

Wenn ich die zweite Maustaste drücke schießt die Figur auch schon in die richtige Richtung.
Leider ist da irgendwie ein Offset in der Höhe drin.
Die Figur hält die Waffe in der Hand und dieser Höhenunterschied zum Boden wird vorbei geschossen.

Wo muss ich diesen Offset in der y-Achse angeben?

void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
        RaycastHit hit;

        if (Input.GetMouseButtonDown (1)) {
            if (Physics.Raycast (ray, out hit, 100)) {
                agent.transform.LookAt (hit.point);
                shooting = true;
                Fire ();
            } 
        }
    }


    private void Fire()
    {
        GameObject bullet = Instantiate (bulletPrefab);

        Physics.IgnoreCollision (bullet.GetComponent<Collider> (), bulletSpawnPoint.parent.GetComponent<Collider> ());

        bullet.transform.position = bulletSpawnPoint.position;

        Vector3 rotation = bullet.transform.rotation.eulerAngles;

        bullet.transform.rotation = Quaternion.Euler (rotation.x, transform.eulerAngles.y, rotation.z);

        bullet.GetComponent<Rigidbody> ().AddForce (bulletSpawnPoint.forward * bulletSpeed, ForceMode.Impulse);

        StartCoroutine (DestroyBulletAfterTime (bullet, bulletLifeTime));
    }

    private IEnumerator DestroyBulletAfterTime(GameObject bullet, float delay)
    {
        yield return new WaitForSeconds (delay);
        Destroy (bullet);
    }

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kleine Erklärung dazu.
Bei deinem Raycast bekommst du ja eine Position zurück, die der Ray (Strahl) getroffen hat. Das ist eine einfache Vector3 Positionsangabe.
Die Position ist natürlich abhängig von dem getroffenen Objekt. Da ist also die Höhe des Objektes (Y) mit drin und nicht nur die X- und Z-Richtungen.

Dein Agent guckt dann in diese Richtung, also die Z Achse wird auf auf den hit.point ausgerichtet.  Ja und dann kann es natürlich sein, dass er geneigt ist, wenn der Punkt nicht auf gleicher Höhe wie dem Player sein Achsen-Nullpunkt lag.
Du musst also die Achse wieder normalisieren. Wenn deine Figur so aufgebaut ist, dass Y nach oben zeigt und Z nach vorne, dann musst du die Drehung der X Achse auf 0 zurück stellen.

Y      zeigt nach oben
|
|______Z     Nach da guckt er oder zielt die Waffe ->
\
  \
    X    Um diese Achse muss gedreht werden, damit Z waagerecht ist/bleibt/wird

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...