2012-11-25 2 views
0

그래서 현재 코드를 사용하여 플레이어 스프라이트가 정지 된 객체와 접촉하는지 여부를 감지하려고합니다. 스프라이트 변수를 다르게 설정했기 때문에 이미 경계 상자 자습서를 사용했고 구문이 사용되지 않았습니다.XNA에서 콜리 전 검사 if 문이 작동하지 않습니다.

사용중인 if 문입니다.

if (spritePosition.Equals(Booksposition)) 
{ 
    spritePosition.X = 0; 
    spritePosition.Y = 0; 
} 

저는 두 가지가 충돌하는지 확인하기 위해 C# 구문이 필요합니다.

이 내 텍스처가 설정하는 방법입니다 ...

Texture2D myTexture; 
Vector2 spritePosition = new Vector2(600,300); 
Vector2 spriteSpeed = new Vector2(50.0f, 50.0f); 
Texture2D Books; 
Vector2 Booksposition = new Vector2(100, 300); 
Vector2 BooksSpeed = new Vector2(50.0f, 50.0f); 

가 컴파일하고 실행 않지만 나는, 그것은 아무것도하지 않는이 코드를 실행

. 대신이

if(spritePosition.Equals(Booksposition)) 
{ 
    spritePosition.X = 0; 
    spritePosition.Y = 0; 
} 

답변

0

당신은 >= 운영자가 당신을 위해 적합하지 않을 수도 있습니다

if(spritePosition.x >= Booksposition.x || spritePosition.y >= Booksposition.y) 
{ 
    spritePosition.X = 0; 
    spritePosition.Y = 0; 
} 

같은 것을 시도해야하지만 난 당신이 아이디어를 얻을 생각합니다.

+0

이 기능은 한 지점에서만 작동합니다. 그래서 스프라이트와 객체 주위에 직사각형을 만들어야했습니다. 그런 다음 스프라이트와 책 위치를 해당 직사각형으로 바꿉니다. 스프라이트 상단에 사각형을 놓고 같은 속도로 이동 시키면됩니다. –

+0

듣기가 좋았습니다. –

0

나는 이것이 늦은 응답이지만 다른 사람들에게 정보를 제공하기 위해 경계 상자는 어떻습니까?

그것은 차원에서 할 쉽게, 바로 사용

BoundingBox의 myCollider = 새로운 BoundingBox의 ((새 Vector3 (spritePosition.X, spritePosition.Y, 0), (새 Vector3 (spriteWidth, spriteHeight, 0))

(collider1.intersects (collider2)) { 이 거기에서 이동이}

당신이 사용할 수있는 경우 R :;

은 다음과 테스트 각 개체 주위에 다음 중 하나를 그리기 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?

이 도움이 되었기를 바랍니다. (누군가) Andrew.

관련 문제