dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Sekojoša kamera
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Iesācējiem
View previous topic :: View next topic  
Author Message
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Fri Mar 26, 2010 4:57 pm    Post subject: Sekojoša kamera

Atkal mani ir piemeklējusi neliela problēma.Šoreiz runa iet par kameru.
Atradu pamācību-kura man liekas mazliet dīvaina.
http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/
Lieta tāda kad nav pilns source kods un pat kļūdains.
Varētu teikt ka tas bija vienīgais "pozīciju" mainošās kameras kods.
no koda nepiciešams būtu pozicijas maiņa un zooms,bet nezinu ko likt to vietā jo na norādīti &lt Rotation un citi.
Rolling Eyes
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Mar 26, 2010 6:49 pm    Post subject:

&lt; ir html entīte < simbolam.
&gt; ir html entīte > simbolam.
&amp; ir html entīte " simbolam.

Pozīcijas maiņu veic ar Move metodi (vai Pos propertiju), un attiecīgi zoom maiņu ar Zoom propertiju. Loģiski, ne?
Back to top
View user's profile Send e-mail
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Fri Mar 26, 2010 7:29 pm    Post subject:

Paldies Smile
kā saprast
Quote:
cam.get_transformation(device /*Send the variable that has your graphic device here*/));
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Mar 26, 2010 8:00 pm    Post subject:

Tas nozīmē, ka get_transformation metodei pirmajā argumentā ir jāpadod graphics device klases objekts (nezinu kur XNA tādu dabūt).
Back to top
View user's profile Send e-mail
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Fri Mar 26, 2010 11:49 pm    Post subject:

Itkā visu izdarīju bet nevaru uzlikt to ka piespiežot pogu pozicija mainās.
uzspiežu bet nekas nenotiek Rolling Eyes Bet ja vienkārši uzliek
Code:
cam.Pos = new Vector2(200.0f,200.0f);
tad viņš atrodas norādītajās koardinātēs.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Mar 27, 2010 12:45 am    Post subject:

Mums zīlēt kristāla bumbā kā tu kodā uzrakstīji to, kad nekas nenotiek?
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Mar 27, 2010 11:39 am    Post subject:

Quote:
uzspiežu bet nekas nenotiek

Daži varianti:
-aizmirsi atkal vispirms mainīgajam piešķirt vērtību
-kaut ko ne tur ierakstīji

Kods pastāstītu vairāk..
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Sat Mar 27, 2010 12:06 pm    Post subject:

Code:
 KeyboardState klaviatura = Keyboard.GetState();

            _pos += AtrumsSpeletajam;

           
            if (klaviatura.IsKeyDown(Keys.Right))
            {
                cam.AtrumsSpeletajam.X += 5.0f;
            }
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Mar 27, 2010 12:42 pm    Post subject:

Varbūt:
-šis kods nemaz neizpildās (uzliec breakpointu, lai pārbaudītu)
-esi kļūdaini nokopējis kodu (un neatbilstošus mainīgo nosaukumus esi salabojis, veidojot jaunus - "_pos" un "Pos")

P.S. Vienmēr vispirms jāizpēta kods, kuru taisies kopēt.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Sat Mar 27, 2010 1:22 pm    Post subject:

1. gadījumā tu norādi sākuma pozīciju, bet 2. tu norādi ātrumu kādu kamera parvietojās. Lai no tā ātruma jēga būtu, ir noteikti jaizsauc kaut kas līdzīgs update() funkcijai, kas ātrumu pieskaitītu pozīcijai. Ja tādas nav(bet iesaku izveidot), tad vari manuāli pieskaitīt -> pozicija += atrums * delta_laiks;
Back to top
View user's profile
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Sat Mar 27, 2010 3:17 pm    Post subject:

Tā pat nekas nemainās Rolling Eyes

Code:
float delta_laiks = (float)gameTime.ElapsedGameTime.TotalSeconds;
            _pos += AtrumsSpeletajam;
            KeyboardState klaviatura = Keyboard.GetState();
            if (klaviatura.IsKeyDown(Keys.W))
                AtrumsSpeletajam.Y += 30.0f * delta_laiks;
            if (klaviatura.IsKeyDown(Keys.S))
                AtrumsSpeletajam.Y -= 30.0f * delta_laiks;
            if (klaviatura.IsKeyDown(Keys.A))
                AtrumsSpeletajam.X += 30.0f * delta_laiks;
            if (klaviatura.IsKeyDown(Keys.D))
                AtrumsSpeletajam.X -= 30.0f * delta_laiks;


Te būs pastebin kods uz manu failu http://pastebin.com/uTQKrNJm
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sat Mar 27, 2010 3:51 pm    Post subject:

Nebija laika īpaši iedziļināties, bet izskatījās, ka tur stipri daudz kļūdu. Iesaku pameklēt pamācību, kura izskaidro labāk C#, tieši objektu (mainīgo) "redzamību", darbības ilgumu un precīzāk iemācīties lasīt koda darbības ceļu. Iespējams, ka noderīgi būtu pamācīties vispirms kādu citu valodu, kurā ar objektu redzamību nav jāķēpājas pašā sākumā. Pat C++ šajā ziņā ir vienkāršāks.
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Sat Mar 27, 2010 4:05 pm    Post subject:

AtrumsSpeletajam jaaizvieto ar _pos, jo 30.0f ir pats spēlētāja ātrums, šobrīd tev iznāk paatrinājums, kas nekur netiek izmantots. Ja tev nav nekāda specifiska kamera, tad vnk izdari tā, ka kameras pozicija ir vienāda ar spēlētāja pozīciju, tādejādi kamera vienmēr skatīsies uz spēlētāju.
Back to top
View user's profile
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Sat Mar 27, 2010 6:32 pm    Post subject:

Paldies tenjou nezinu kāpēc pirmstam tas neiešāvās galvā Very Happy
njam bet kā lai dabuju viņu centrā ? lai speletaja centrs butu vienāds ar kameras centru.

Code:
cam.Pos = SpeletajaPos;

prmstam esmu to ko līdigu darijis ar 2 sprietiem bet tagad liekas savādāk Very Happy
Back to top
View user's profile
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Sat Mar 27, 2010 6:43 pm    Post subject:

Tas parasti atkarīgs no projekcijas matricas, bet pieņemu tavā gadījumā vienkārsākais veids, būtu kamerai pieskaitīt izšķirtspēja/2. Respektīvi pos.x += width/2 un pos.y += height/2(vai mīnuss, arī atkarīgs no projekcijas).
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> Iesācējiem All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group