Date post: | 05-Dec-2014 |
Category: |
Documents |
Upload: | tomas-slavicek |
View: | 1,024 times |
Download: | 3 times |
Agenda
aktuální situace WP v ČR XNA – zopakování obrázky: rotované, animované…
pohyb, kolize ve 2D zvuky a hudba načítání a ukládání dat
Silverlight + XNA
Windows Phone
oficiálně v ČR od letošního září
Windows Phone
klíčová slova: Mango, Tango, Nokia
Budoucnost
Windows 8 WP Apollo
Marketplace CZ
přes 180 českých aplikací, 36 her
Marketplace CZ
přes 180 českých aplikací, 36 her
Marketplace
celosvětově >65 tisíc aplikací
Marketplace
nejvíce se kupují hry
Zkušenosti
hra Galaxy Jet
Zkušenosti
hra Galaxy Jet …a vaše zkušenosti?
Podpora vývojářů
soutěž o Lumia 800 msdn.cz/nokia
hackathony
Webové zdroje
SmartMania.cz články rozcestník – můj blog
tomasslavicek.cz
Opakování XNA
kdo ještě nezná? vývoj pro PC, mobil, Xbox 360
herní smyčka, Content Pipeline,SpriteBatch…
Opakování XNA
herní smyčka
Co budeme dělat?
začátek nové hry
obrázky: http://bit.ly/xna_3
Bylo minule…
orientace displeje gesta na displeji akcelerometr
text a lokalizace hry portace na PC
Vykreslení obrázku
objekt Sprite Vector2 Position Vector2 Size Texture2D Texture
LoadContent() Draw()
Obrázek i s rotací
objekt Sprite Vector2
Position Vector2 Size Texture2D
Texture
LoadContent() Draw()
RotatedSprite Vector2 Position Vector2
AnchorPoint float Rotation float Scale Texture2D Texture
LoadContent() Draw()x
Obrázek i s rotací
x
parametry SpriteBatch.Draw()
Animovaný obrázek
několik měnících se obrázků
objekt AnimatedSprite poděděný od Sprite
navíc: pole Textures
upravené LoadContent() Draw()
„Tiled“ grafika
jeden obrázek hra se skládá z jeho výřezů
optimalizace výkonu
„Tiled“ grafika
Tiled map editor mapeditor.com
Pohyb míčku
úhel a rychlost -> vektor přírustku
odrážení od stěn
ElapsedGameTime.TotalMilliseconds
Kolize
bod vs. obdélník rect1.Contains( point1 )
obdélník vs. obdélník rect1.Intersects( rect2 )
Kolize
kruh vs. kruh ?
Kolize
kruh vs. kruh
vzdálenost středů <součet poloměrů
Vector2.Distance( center1, center2 ) < r1 + r2
Kolize
kruh vs. obdélník ?
Kolize
kruh vs. obdélník
najdu nejbližší bodod středu k obdélníku
nesmí být menší, než poloměr
Vector2.Clamp( v, min, max )
Kolize
orientované obdélníky ?
Kolize
orientované obdélníky Separating Axis Theorem
za některou stranou1. obdélníku se musínacházet všechny body 2.
Separating axis theorem orientované obdélníky
nutné testovat oba vzájemně
Pozice bodu vůči přímce skalární součin
Vector2.Dot( … )
pro 2 normalizovanévektory… v1.Normalize()
>0 …úhel >90°<0 … <90°=1 … rovnoběžné
pozor na přehozenou osu Y
Kolize
kruh vs. orientovaný obdélník ?
Kolize
kruh vs. orientovaný obdélník pootočit souřadnice,
aby byl obdélníkosově srovnaný
angle = Math.Atan2( point1.Y - point2.Y, point2.X - point1.X )
Vector2.Transform( point, Matrix.CreateRotationZ( angle ))
Ukázka v praxi
kruh vs. orientovaný obdélník obdélník máme už reprezentovaný
správně = osově srovnaný
posuneme/otočímek němu střed kruhu
Zvuky a hudba
SoundEffect a SoundEffectInstance
MediaPlayer hudba na pozadí nutné kontrolovat, zda už nehraje jiná!
if (MediaPlayer.GameHasControl)
Isolated Storage
2 přístupy: IsolatedStorageSettings – kolekce
hodnot IsolatedStorageFile – soubory
data přežijí i vypnutí aplikace
IsolatedStorageSettings použití jako Dictionary
v namespace System.Windows
Mogade.com
sdílení skóre, achievementy,online statistiky
jednoduché API, přímo pro WP
návod pro XNA mají na fóru
pozor na speciálníznaky ve jméně hráče
Načítání levelu podle XML data v XML tagách
<SpriteInfo X="20" Y="50" AssetName="obrazek" />
streamové čtení XmlReader reader =
XmlReader.Create(path)
while (reader.Read())
if (reader.NodeType == XmlNodeType.Element&& reader.Name == "SpriteInfo")
Silverlight + XNA
možnost propojení -> i kombinace na 1 obrazovce
Silverlight = menu, XNA = herní část
Silverlight + XNA
vlastnosti: navigační model ze Silverlightu nejsou GameComponent, DrawableG.C.
SharedGraphicsDeviceManager
jiné předpisy metod Update(), Draw()…
nepoužívat Mouse API, ale TouchCollection
Navigační model
navigace přes QueryString objekt NavigationService
nutné občas řešit „back stack“
Ukázka v praxi
hybridní projekt obrazovka menu + hra implementace „LoadContent“ předání parametru
další obrazovka – výhra oprava „back stacku“
implementace pauzy ve hře + ukončení hry z XNA
Webové zdroje
SmartMania.cz články rozcestník – můj blog
tomasslavicek.cz
Tomáš Slavíč[email protected] Twitter: @tomasslavicek