2017-07-23 2 views
1

J'ai cherché sur des tonnes de forums, mais rien à travailler avec (ou comprendre). i ont donc ceComment faire pivoter le vecteur

public void OnFinishCasting(Champion owner, Spell spell, Unit target) 
    { 
     var current = new Vector2(owner.X, owner.Y); 
     var to = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current); 
     var range = to * 1150; 
     var trueCoords = current + range; 

Et je vais vous expliquer ce qu'il fait. Quand j'appuie sur le bouton Q, il tire un projectile dans le sens de la souris. Ce dont j'ai besoin est de faire un autre projectile et de le tirer dans un autre sens comme un cône ou quelque chose. Comment le faire?

Répondre

1

Sur la base de ce que vous dites:

faire une autre projectile et tourné dans une autre direction ..., pas importe où il va

Je vais simplement ajouter une certaine valeur aléatoire le X & Y sur

new Vector2(spell.X + intRndX, spell.Y + intRndY) 


mise à jour basée sur le suivi commentaire

Essayez ceci:

public static class Vector2Extensions 
{ 
    public static Vector2 Rotate(this Vector2 v, double degrees) 
    { 
     return new Vector2(
      (float)(v.X * Math.Cos(degrees) - v.Y * Math.Sin(degrees)), 
      (float)(v.X * Math.Sin(degrees) + v.Y * Math.Cos(degrees)) 
     ); 
    } 
} 

qui ajoutera une extension à la classe Vector2 et vous pouvez appeler:

trueCoords.Rotate(Math.PI/90) 

pour obtenir le nouveau vecteur

+1

Eh bien, laissez-moi rectifier, j'ai formulé la phrase fausse. Faire un autre projectile, mais le tirer comme 90 degrés de différence entre l'original (et celui d'origine tourne où la souris est) – Gustavo

+0

Je pense qu'il pourrait y avoir plus caché ** captchas ** pouvez-vous ajouter votre projet à GitHub et coller un lien ici? – HelderSepu

+0

Voici le fichier CS complet du projectile https://github.com/LeagueSandbox/LeagueSandbox-Default/blob/indev/Champions/Ezreal/Q.cs – Gustavo