XNA / Monogame 회전에 관계없이 텍스처 주위에 직사각형을 생성합니까?

멍청한

Rectangle축이 정렬되어 있다는 것을 알고 있습니다. 좋습니다. 사각형을 만드는 방법을 알 수 없으므로 회전에 관계없이 항상 전체 스프라이트를 포함합니다. 나는 모든 곳에서 답을 찾고 있었지만 어디에서도 똑 바른 답을 얻을 수 없습니다.

예를 들면 :

여기에 이미지 설명 입력

여기에 이미지 설명 입력

원점이 텍스처의 중간이라고 가정하면 어떻게해야합니까?

편집하다

조금만 꼼꼼히 살펴보면 여기까지 왔습니다.

public Rectangle BoundingBox
{
    get
    {

        var cos = Math.Cos(SpriteAngle);
        var sin = Math.Cos(SpriteAngle);

        var t1_opp = Width * cos;
        var t1_adj = Math.Sqrt(Math.Pow(Width, 2) - Math.Pow(t1_opp, 2));

        var t2_opp = Height * sin;
        var t2_adj = Math.Sqrt(Math.Pow(Height, 2) - Math.Pow(t2_opp, 2));

        int w = Math.Abs((int)(t1_opp + t2_opp));
        int h = Math.Abs((int)(t1_adj + t2_adj));

        int x = Math.Abs((int)(Position.X) - (w / 2));
        int y = Math.Abs((int)(Position.Y) - (h / 2));

        return new Rectangle(x, y, w, h);

    }
}

여기에 이미지 설명 입력

멍청한

너무 늦어서 미안하지만 얼마 전에 이것을 알아 냈고 답변을 게시하는 것을 잊었습니다.

public virtual Rectangle BoundingBox
{
    get
    {
        int x, y, w, h;
        if (Angle != 0)
        {
            var cos = Math.Abs(Math.Cos(Angle));
            var sin = Math.Abs(Math.Sin(Angle));
            var t1_opp = Width * cos;
            var t1_adj = Math.Sqrt(Math.Pow(Width, 2) - Math.Pow(t1_opp, 2));
            var t2_opp = Height * sin;
            var t2_adj = Math.Sqrt(Math.Pow(Height, 2) - Math.Pow(t2_opp, 2));

            w = (int)(t1_opp + t2_opp);
            h = (int)(t1_adj + t2_adj);
            x = (int)(Position.X - (w / 2));
            y = (int)(Position.Y - (h / 2));
        }
        else
        {
            x = (int)Position.X;
            y = (int)Position.Y;
            w = Width;
            h = Height;
        }
        return new Rectangle(x, y, w, h);
    }
}

여기입니다. 편집에서 내 작품에서 나는 실수했다 Math.Cossin도움이되지 않았다 변수.

그래서 그것은 기본적인 삼각법입니다. 텍스처 각도가 0이 아닌 경우 너비와 높이로 형성된 두 삼각형의 변을 계산하고 변을 너비와 높이 값으로 사용한 다음 사각형을 텍스처 중심에 배치합니다. 그게 말이된다면.

설명하는 데 도움이되는 사진은 다음과 같습니다.

풀다

다음은 최종 결과의 gif입니다.

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XNA / Monogame의 Color 속성을 사용하여 그린 텍스처에 색을 입히기, 균형을 잡는 방법은 무엇입니까?

분류에서Dev

Monogame 업그레이드 : 유형은 Monogame과 XNA 모두에 있습니다.

분류에서Dev

monogame 또는 xna에서 Artemis를 사용하여 마우스 클릭 사각형을 추가하는 것이 선호되는 방법 또는 스팟은 무엇입니까?

분류에서Dev

Monogame 또는 XNA의 경우 주 기능 외부에 생성되는 패턴이 있습니다.

분류에서Dev

MonoGame / XNA는 Spritebatch에서 다각형 그리기

분류에서Dev

Monogame / XNA를 사용하여 영구 Texture2d에 스프라이트 그리기

분류에서Dev

회전 직사각형과 비 회전 직사각형 사이에 선을 어떻게 그릴 수 있습니까?

분류에서Dev

XNA BasicEffect, 텍스처가있는 지형에서 이상한 결과

분류에서Dev

선형 회귀를위한 텍스트 전처리에 올바른 단계가 있습니까?

분류에서Dev

선형 회귀를위한 텍스트 전처리에 올바른 단계가 있습니까?

분류에서Dev

XNA (Monogame) 충돌을위한 짧은 길이 필요

분류에서Dev

XNA (Monogame)에서 큰 이미지로드, 매우 불안정 함

분류에서Dev

XNA에서 마우스를 사용할 수 있는지 확인하는 방법-Monogame

분류에서Dev

LWJGL 텍스처 위에 직사각형 그리기

분류에서Dev

AS3 MovieClip의 위치에 관계없이 스테이지의 특정 지점을 중심으로 MovieClip 회전

분류에서Dev

XNA Framework / Monogame, 100 개의 개체 인스턴스 생성

분류에서Dev

XNA / MonoGame Viewport 사용 방법

분류에서Dev

XNA : 타이머 틱에 어느쪽에서든 적을 생성 한 다음 무작위로 움직 이도록하는 데 도움이 필요합니다.

분류에서Dev

플레이어 위치에 따라 텍스처 회전

분류에서Dev

자바 스크립트에서 직사각형 배열 회전

분류에서Dev

XNA CreateBillboard는 원점이 아닌 구의 가장자리에서 회전합니까?

분류에서Dev

텍스트 크기에 관계없이 동일한 수직 위치에 텍스트 하단을 가져옵니다.

분류에서Dev

JPanel에서 직사각형을 그릴 수 없습니다.

분류에서Dev

동시에 두 개의 캔버스 직사각형을 이동할 수 없습니다.

분류에서Dev

한 직사각형과 다른 직사각형의 이전 위치 사이의 충돌을 어떻게 감지합니까? 파이 게임

분류에서Dev

XNA 스케일 텍스처를 사전 정의 된 값으로

분류에서Dev

이 직사각형에 텍스트를 추가하려면 어떻게해야합니까?

분류에서Dev

지도에서 주어진 좌표로 직사각형을 오버레이하려면 어떻게합니까?

분류에서Dev

Perl 형식은 생성 범위에 관계없이 파일 핸들에 바인딩됩니까?

Related 관련 기사

  1. 1

    XNA / Monogame의 Color 속성을 사용하여 그린 텍스처에 색을 입히기, 균형을 잡는 방법은 무엇입니까?

  2. 2

    Monogame 업그레이드 : 유형은 Monogame과 XNA 모두에 있습니다.

  3. 3

    monogame 또는 xna에서 Artemis를 사용하여 마우스 클릭 사각형을 추가하는 것이 선호되는 방법 또는 스팟은 무엇입니까?

  4. 4

    Monogame 또는 XNA의 경우 주 기능 외부에 생성되는 패턴이 있습니다.

  5. 5

    MonoGame / XNA는 Spritebatch에서 다각형 그리기

  6. 6

    Monogame / XNA를 사용하여 영구 Texture2d에 스프라이트 그리기

  7. 7

    회전 직사각형과 비 회전 직사각형 사이에 선을 어떻게 그릴 수 있습니까?

  8. 8

    XNA BasicEffect, 텍스처가있는 지형에서 이상한 결과

  9. 9

    선형 회귀를위한 텍스트 전처리에 올바른 단계가 있습니까?

  10. 10

    선형 회귀를위한 텍스트 전처리에 올바른 단계가 있습니까?

  11. 11

    XNA (Monogame) 충돌을위한 짧은 길이 필요

  12. 12

    XNA (Monogame)에서 큰 이미지로드, 매우 불안정 함

  13. 13

    XNA에서 마우스를 사용할 수 있는지 확인하는 방법-Monogame

  14. 14

    LWJGL 텍스처 위에 직사각형 그리기

  15. 15

    AS3 MovieClip의 위치에 관계없이 스테이지의 특정 지점을 중심으로 MovieClip 회전

  16. 16

    XNA Framework / Monogame, 100 개의 개체 인스턴스 생성

  17. 17

    XNA / MonoGame Viewport 사용 방법

  18. 18

    XNA : 타이머 틱에 어느쪽에서든 적을 생성 한 다음 무작위로 움직 이도록하는 데 도움이 필요합니다.

  19. 19

    플레이어 위치에 따라 텍스처 회전

  20. 20

    자바 스크립트에서 직사각형 배열 회전

  21. 21

    XNA CreateBillboard는 원점이 아닌 구의 가장자리에서 회전합니까?

  22. 22

    텍스트 크기에 관계없이 동일한 수직 위치에 텍스트 하단을 가져옵니다.

  23. 23

    JPanel에서 직사각형을 그릴 수 없습니다.

  24. 24

    동시에 두 개의 캔버스 직사각형을 이동할 수 없습니다.

  25. 25

    한 직사각형과 다른 직사각형의 이전 위치 사이의 충돌을 어떻게 감지합니까? 파이 게임

  26. 26

    XNA 스케일 텍스처를 사전 정의 된 값으로

  27. 27

    이 직사각형에 텍스트를 추가하려면 어떻게해야합니까?

  28. 28

    지도에서 주어진 좌표로 직사각형을 오버레이하려면 어떻게합니까?

  29. 29

    Perl 형식은 생성 범위에 관계없이 파일 핸들에 바인딩됩니까?

뜨겁다태그

보관