Schuss-Klasse



  • Hi,

    ich habe einen schuss programmiert, den man abfeuern kann wenn man enter drückt. Jedoch kann man so immer nur einen schuss abfeuern, bis dieser irgendwas trifft. Ich wollte jetzt eine schuss-klasse erstellen. Da könnte man ja immer ein neues objekt für einen schuss erstellen. Jedoch weiss ich nicht, wie ich das alles in die klasse packen soll. also den CSprite und die Bewegung.

    ich habe mir das so gedacht:

    class schuss1
    {
    	schuss1();
    	~schuss1();
    	int SchussGeschwindigkeit=5;
    	int SchussPositionY=0;
    	CSprite schuss2 
    }
    

    Aber ich glaube da fehlt noch einiges. Zum beispiel, wie sich der schuss bewegen soll.

    Kann mir einer da weiterhelfen?

    MfG

    Spackensalat



  • Du brauchst:
    Die Position des Schusses
    Den Vektor der die Richtung angibt in die sich der Schuss bewegen soll
    Die Geschwindigkeit mit der er sich bewegen soll
    Möglich: Die Lebenszeit des Schusses. Vlt soll er ja irgendwann verschwinden wenn er nichts trifft. Dann brauchst du auch die Startzeit des Schusses um später vergleichen zu können ob schon genug Zeit vergangen ist.
    Das Bild des Schusses sollte in einer Oberklasse geladen werden damit nicht für jedes Projektil ein extra Bild angelegt wird.

    Du kannst auch noch den Winkel des Schusses speichern oder direkt den Richtungsvektor dafür verwenden.



  • Hallo Spackensalat,

    typedef vector Velocity;
    
    class Projectile
    {
    public
       Projectile(/* ... */);
       ~Projectile();
       Vector position;
       Vector speed;
    
       void Draw();
       void Logic(); //Berechnungen anstellen usw
       //void Shoot();
       //void AttachToParticleManager(); 
       //Wie auch immer du deinen code designest, das kommt halt hier.
    private:
       Vector m_velocity;
       Vector m_direction; //Geschwindigkeit ist immer relativ zur Richtung und positiv, lässt sich auch einfach in einem Vector speed vereinen, ist so aber dem reelen Vorbild näher kommender und imho leichter verständlich bzw veränderbar. (Macht später Berechnungen un-fummeliger wenn du die beiden Dinge getrennt hälst)
    
       Sprite *m_sprite;
    }
    

Anmelden zum Antworten