2012-11-20 3 views
0

그래서 항상 마우스 위치를보고 있도록 스프라이트를 회전하고 싶습니다.XNA에서 스프라이트 회전

 public void draw(SpriteBatch sb) 
    { 
     int mouse_x = Mouse.GetState().X; 
     int mouse_y = Mouse.GetState().Y; 
     float angles = Calc.getAngle(new Vector2(mouse_x, mouse_y)); 

     sb.Draw(texture, position, null, Color.White, angles, origins, SpriteEffects.None, 1); 

    } 

    //Calc.cs method 
    public static float getAngle(this Vector2 v) 
    { 
     return (float)Math.Atan2(v.Y, v.X); 
    } 

나는 다음과 같은 오류가 점점 오전 : 'Microsoft.Xna.Framework.Rectangle'에 'Microsoft.Xna.Framework.Vector2'에서 변환 할 수 없습니다 :

인수 2를 다음 코드를 사용하고

필자는 매개 변수가 정확하다고 생각했지만 분명히 아닙니다. 나는 왜 그것이 위치에 대한 벡터를 받아들이지 않을지 알 수 없다.

도움이 필요하십니까?

답변

3

MSDN에 따르면 8 개의 매개 변수가있는 메서드는 Vector2가 아닌 Rectangle을 사용합니다. 9 개의 매개 변수와 Vector2가있는 몇 가지 메소드가 있습니다. 매개 변수가 누락 되었습니까?

1

Draw 메서드의 배율 매개 변수에 "origins"뒤에 부동 소수점 숫자를 추가해야하고 텍스처 크기를 변경하지 않으려면 배율을 1로 설정해야합니다. (그리기의 6 번째 오버로드를 사용해야합니다. 메서드는 위치에 vector2를 사용하고 눈금에는 float을 사용하는 다른 솔루션은 다섯 번째 오버로드를 사용합니다.이 경우에는 위치에 직사각형을 사용해야하므로 규모가 필요하지 않습니다.

0

vector.Y 및 vector.Y를 사각형의 새 인스턴스에 배치하고 spritebactch에서 vector2 대신 rectangle 인스턴스를 사용합니다. draw 메서드

관련 문제