Jump to content
Unity Insider Forum

Guided Missle Frage


Sriel

Recommended Posts

Hey Leute mal ne Frage,

 

mir ist folgendes aufgefallen und ich verstehe es nicht...

Ich habe einen "Lenkraketen"-Script geschrieben, der Code hier untern funktioniert okay? habe den Transform rot markiert um den es geht. Vorher hatte ich nämlich den blau markierten Vector3 genutzt, es war die selbe Referenz zur Position des Spielers(Players)! Aber mit einem Vector3 funktioniert das Script nicht, mit dem Transform schon...warum??

 

using UnityEngine;

using System.Collections;

 

public class TentacleBossBullet : BulletSystem

{

/* BulletSystem-Variables

Rigidbody bulletRigidbody;

public float bulletSpeed;

public int weaponDamage;

public int damageModifier;

protected Vector3 shotDirection;

protected Vector3 playerTargetPosition;

*/

public float destructionAfterSeconds;

public float rotationSpeed;

Transform pTarget;

 

public static bool bossPowerWeaponMode = false;

 

public override void Awake()

{

!!!! base.Awake();=getcomponent rigidBody& FindByTag vector3 playerPosition!!!!

weaponDamage = GameObject.FindGameObjectWithTag("BossTentacle").GetComponent<tentaclebossfight>().bossBulletDamage;

damageModifier = GameObject.FindGameObjectWithTag("BossTentacle").GetComponent<tentaclebossfight>().bossBulletPowerDamageModifier;

 

pTarget = GameObject.FindGameObjectWithTag("Player").transform;

}

public override void Start()

{

bulletRigidbody.velocity = Vector3.forward;

}

//Shot and selfdestruction after time

void FixedUpdate()

{

//Start shooting guided bullets

GuidedBulletShot();

//Selfdestruction after time

Destroy(this.gameObject, destructionAfterSeconds);

}

public override void OnTriggerEnter(Collider other)

{

if(other.tag == "Player")

{

other.gameObject.SendMessage("ApplyDamage", weaponDamage, SendMessageOptions.DontRequireReceiver);

Destroy(this.gameObject);

}

}

#region GuidedBullet and correct rotationTowardsPlayer-function

private void GuidedBulletShot()

{

transform.rotation = RotateTowardsPlayer();

shotDirection = (pTarget.position - transform.position).normalized;

bulletRigidbody.velocity = shotDirection * bulletSpeed;

}

private Quaternion RotateTowardsPlayer()

{

//Get Rotation Direction

Vector3 rotateDirection;

rotateDirection = (pTarget.position - transform.position);

rotateDirection = Vector3.RotateTowards(transform.forward, rotateDirection, rotationSpeed * Time.deltaTime, 5f);

 

//Set rotation

Quaternion activeRotation;

activeRotation = Quaternion.LookRotation(rotateDirection);

return activeRotation;

}

#endregion

}</tentaclebossfight></tentaclebossfight>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wieso willst du einen Vector3 in der Awake speichern?

Wenn du die Position 1-malig als Vector3 speicherst wird der ja nicht mitgeändert wenn sich die transform.position ändert..

Und das tut sie u.U. jeden Frame ^^

Außer natürlich das Ziel ist irgend ein Turm der nicht weg kann..

Trotzdem solltest du generell immer die Transform Komponente abspeichern und darüber dann die position abfragen, da brauchst du dann auch keinen zusätzlichen Vector3 (außer du willst irgendeine Position aufgrund dieser Info berechnen und die du an mehreren Stellen benötigst. Einen Vorhaltepunkt beispielsweise)

 

Außerdem verstehe ich deine Awake nicht ganz ._.

Wieso überschreibst du die Methode?

Und ich weiß auch ehrlich gesagt nicht was du in der blau markierten Zeile machen willst.. Ist das Pseudocode? o.O

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja die blaue zeile is pseudocode. und zum überschreiben. in der awake methode greife ich halt auf die rigidbody komponente und speicher die spielerposition als vector3. die basisklasse "BulletSystem" beschreibt das grundgerüst für alle bullets, missles usw. und da jeder bullet auf die rigidbody komponente zugreifen muss, und auch die position des spieler als vector 3 benötigt wird habe ich es halt so gelöst...

 

Aber wo is den der unterschied zwischen Transform und Vector3? Vector3 beschreibt ja eine position und Transform ist ja die transform einer Komponente. Nur ist mir halt wie oben beschrieben diese sache aufgefallen,

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...