Na FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!
Vytvořit web zdarmaNa FreeHostingu Endora běží desítky tisíc webů. Přidejte se ještě dnes!
Vytvořit web zdarmaobdelník.Contains(bod)
např. kolize obdelníka s myší:
if (new Rectangle(pozice.X,pozice.Y,width,Height).Contains(new Point(mys.X, mys.Y)))
obdelník.Contains(obdelník)
kolize obdelníka s obdelníkem pomocí Contains jeden obdelník musí být uvnitř druhého :
if (new Rectangle(pozice.X,pozice.Y,width,Height).Contains(new Rectangle(pozice.X,pozice.Y,width,Height)))
obdelník.Intersects(obdelník)
kolize dvou obdelníků při doteku :
if (new Rectangle(pozice.X,pozice.Y,width,Height).Intersects(new Rectangle(pozice.X1,pozice.Y1,width1,Height1))
Vector2.Distance(střed1,střed2) < poloměr1 + poloměr2
if (Vector2.Distance(kruh1, kruh2) > ball1.Width / 2 + ball2.Width / 2)
{
kruh1.X += 5;
kruh2.X -= 5;
}
najít nejbližší bod od středu kruhu k obdelníku
Vector2 nejbližšíBod = Vector2.Clamp(středKruhu,levýHorníRohObdelníku,pravýDolníRohObdelníku)
Vector2.Distance(středKruhu,nejbližšíBod) < kruh.Width / 2
stred.X += kruh.Width / 2;
stred.Y += kruh.Height / 2;
Vector2 nejblizsiBod = Vector2.Clamp(stred, new Vector2(retCtverec.X, retCtverec.Y), new Vector2(retCtverec.X + retCtverec.Width, retCtverec.Y + retCtverec.Height));
if (Vector2.Distance(nejblizsiBod, stred) > kruh.Width / 2)//kruh.Width / 2 je poloměr kruhu
{
kruh.X -= 5;
}
public bool kolizeKruhObdelnik(Vector2 stredKruhu, float polomer)
{
Vector2 min = -bodOtaceniObdelníku * scale;
Vector2 max = min + new Vector2(obdelnik.Width,obdelnik.Height) * scale;
Matrix rotace = Matrix.CreateRotationZ(-otoceniObdelnika);
Matrix transformace = Matrix.CreateTranslation(new Vector3(-obdelnikPoz, 0f));
Vector2 novyStred = Vector2.Transform(stredKruhu, transformace * rotace);
Vector2 nejblizsiBod = Vector2.Clamp(novyStred, min, max);
return Vector2.Distance(novyStred, nejblizsiBod) <= polomer;
}
Pokud je u kruhu použito vykreslení
spriteBatch.Draw(textura, pozice, null, Color.White, rotation, střed otáčení, scale, SpriteEffects.None, 0)
a střed otáčení je ve středu textury je střed kruhu u kolizi roven pozici kruhu a poloměr se dá násobit scalem.