Pongk Geschrieben 15. April 2021 Melden Share Geschrieben 15. April 2021 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); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 15. April 2021 Melden Share Geschrieben 15. April 2021 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.