XNA를 사용하여 학교 프로젝트로 게임을 개발 중입니다. 내 "엔터티"기본 클래스에서 "엔터티"의 특정 하위 클래스를 확인하는 코드를 만들려고합니다. 현재 충돌하고 있습니다.- 기본 인스턴스 목록을 살펴볼 때 특정 인스턴스가 어떤 하위 클래스인지 어떻게 알 수 있습니까?
을 "엔티티"
protected Entity CheckCollisionWithEntity(Vector2 pos)
{
Rectangle r = new Rectangle((int)pos.X, (int)pos.Y, _texture.Width, _texture.Height - 1);
foreach (Entity e in _entities)
{
if (r.Intersects(e.Collider))
{
if(e != this)
return e;
}
}
return null;
}
"적"과 같은 것입니다 "플레이어"(에
, 서브 클래스에서 :
이
내가 지금까지 사용하려고했습니다 것입니다 아무 변화가 없다 - "법인")의if (CheckCollisionWithEntity(Position) is Enemy)
{
Game1.instance.reloadLevel();
}
내 문제는 내가 "적"인스턴스와 충돌 할 때이다. "reloadLevel()"메서드가 작동한다는 사실을 알고 있으며 디버그 코드로 전환하려고했습니다. 여기서 내가 뭘 잘못하고 있니? 나는 "is"레퍼런스를 오해 했습니까? 적 Collider는 다른 덜 구체적인 유형의 콜리 전 검사를 위해 일하고 있습니다.
'CheckCollisionWithEntity'가 종료되고 발견 된 첫 번째 Entity가 반환됩니다. 플레이어가 둘 이상의 개체와 충돌하고 그 중 하나만적일 경우 어떻게합니까? –
IEnumerable을 반환하고 CheckCollisionsWithEntities (..) .OfType과 함께 LINQ의 힘을 사용하십시오. –
@SirRufo이 함수가 familliar가 아니므로 코드에서 사용하는 방법을 지정할 수 있습니까? 미리 감사드립니다! –