Unity-Bullet flasche Rotation?

Festplatte

PCGH-Community-Veteran(in)
Guten Tag, mal wieder ein kleines Problem von mir. :ugly: Ich arbeite gerade an einem FPS mit Unity und stehe nun vor dem Problem der Bullets, also den Geschossen. Ich verwende als Bullet-Model momentan dieses hier: AK 47 Bullet - 3d model - .obj, .max, .fbx. Das Problem ist jetzt, dass wenn die Bullets aus der Waffe geschossen werden, sie sich nicht nach der Richtung der Waffe drehen, sondern der globalen Y-Achse. Also werden sie nicht gerade mit der Spitze nach vorne geschossen, je nach Richtung in die man schaut mit einer anderen Drehung. Wie kann ich es nun erreichen, dass die Kugel mit der Spitze nach vorne aus der Waffe fliegt? Hier mein Schuss-Script:
Code:
if (Input.GetButton("Fire1")) {
	if (shotAmount > 0) {
		if (Time.time - fireRate > nextFireTime) {
			nextFireTime = Time.time - Time.deltaTime;
			if (nextFireTime < Time.time) {
				var schuss = Instantiate(shot, transform.position, transform.rotation);
				schuss.rigidbody.AddForce(transform.forward * 1500);
				Instantiate(muzzle, muzzleSpawn.position, Quaternion.identity);
			}
		}
	}		
}
 
Zuletzt bearbeitet:
Kenn mich zwar nicht so mit Unity aus, aber angenommen es handelt sich um einen Scenegraph und 'transform' ist ein Child von 'Weapon', sollte das transform.localRotation falsch sein. In meiner Engine wäre es ein transform.getWorldRoation()

Da bei transform.position das 'local' fehlt nehme ich an dass das die WorldPosition beschreibt. Falls die API sauber ist solle also:

var schuss = Instantiate(shot, transform.position, transform.rotation);

funktionieren.

Falls nicht bitte mehr details: wie ist der Graph aufgebaut, woher kommt transform usw...
 
Hab beim Kopieren gefailt, der Code ist schon transform.rotation, nicht transform.localRotation. Ich teste eure Ideen morgen mal. :daumen:
 
Hat sich erledigt, ich habe die Bullet einfach in Blender geöffnet und dort nochmal gedreht. Mache jetzt eh alle Scripts nochmal neu. :)
 
Zurück