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

Pārlecoš Spraits(Gariņš)
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija
View previous topic :: View next topic  
Author Message
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Sun Feb 14, 2010 10:27 pm    Post subject: Pārlecoš Spraits(Gariņš)

Radās jautājums kā uztaiīt pārlecošu spraitu

Piemēram: Uzspiežot Taustiņu down tas pārlektu 1 rūtiņu zemāk. Rolling Eyes
Nevis nobrauktu.



Code:
if (klaviatura.IsKeyDown(Keys.Down))
                laukumaPozicija.Y -= atrums;
Back to top
View user's profile
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Sun Feb 14, 2010 10:50 pm    Post subject:

Šis labs. Pirmo reizi redzu, ka jau tēmā ir iekļauta atbilde ... vai arī kaut ko smagi pārpratu ?

Piezīmē lauciņam zaļas kājas un antenas... pfff
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Feb 14, 2010 10:56 pm    Post subject:

Viņš nobrauc tikai tāpēc, ka tu "pārmet" viņu bieži mazos attālumos.
Viss ir atkarīgs no tā, kā tu gribi, lai tas "pārlec" - vai nu tad, kad spiež pogu (lieto attiecīgo eventu), vai nu pogu turot (lieto taimeri).

Es tev ieteiktu pacensties saprast precīzi, kā viss strādā. Šāds jautājums nerastos, ja to zinātu. Wink
_________________
"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: Sun Feb 14, 2010 11:10 pm    Post subject:

Very Happy nē atbildes tur nav tas kods ir tāds kā tagad.Tadu kodu man nevajag :D

Tas nav antēnas Very Happy tie ir virzieni kuros būtu iespējams nokļūt :D



iedomāimies ka ir divi taisnstūri un pa starp tiem ūdens.
es negribu lai cilvēciņš pedētu. Gribu lai tas tiek tā kā teleportēts. Very Happy
lab varbūt izklauas smieklīgi...

ņemšu citu piemēru
pozicija 0

P 0 0
0 0 0
0 0 0
nospiežot pogu tas nokļūst 1 rindiņu zemāk
0 0 0
P 0 0
0 0 0



Rolling Eyes
Back to top
View user's profile
serioussam909



Joined: 15 May 2006
Posts: 92

PostPosted: Sun Feb 14, 2010 11:47 pm    Post subject:

Tev vajag kkur saglabāt klavieres iepriekšējo pozīciju - lai vēlreiz var pārlekt tikai tad kad poga ir atlaista un nospiesta atkal.
Otrs variants ir pēc katra pārlēciena ielikt nelielu laika aizturi.
Un atrums vietā jāliek attālums starp rūtiņu centriem.
Back to top
View user's profile
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Mon Feb 15, 2010 9:51 am    Post subject:

Code:

if (klaviatura.IsKeyDown(Keys.Down))
                laukumaPozicija.Y -= atrums;


Tev šitas kods ir kur aplikācijā? Tajā funkcijā, kas tiek izpildīta katrreiz pārzīmējot kadru (pamatciklā)?

Tad noliec no šo pašu kodu tajā funkcijā, kas apstrādā klaviatūras taustiņu nospiešanu (KeyUp). Un mainīgā "atrums" vietā ieliec mainīgo "rutinjas_platums".

Kādā vidē tu vispār darbojies?
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Mon Feb 15, 2010 7:07 pm    Post subject:

Vide: c# XNA Very Happy jau kādu laiciņu.

Code:
Vector2 laukumaPozicija = Vector2.Zero;
        const float atrums = 5;


Code:
KeyboardState klaviatura = Keyboard.GetState();
            if (klaviatura.IsKeyDown(Keys.Right))
                laukumaPozicija.X -= atrums;
            if (klaviatura.IsKeyDown(Keys.Left))
                laukumaPozicija.X += atrums;
            if (klaviatura.IsKeyDown(Keys.Down))
                laukumaPozicija.Y -= atrums;
               
            if (klaviatura.IsKeyDown(Keys.Up))
                laukumaPozicija.Y += atrums;


Tas man tāds kā defaultais spraitu pārvietošanas kods Very Happy
Back to top
View user's profile
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Mon Feb 15, 2010 7:14 pm    Post subject:

ātrums = rūtiņas izmērs
Back to top
View user's profile
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Mon Feb 15, 2010 7:22 pm    Post subject:

bet nav mazliet par ātru ? Very Happy rutiņas izmeri ir 200x200 un tādā kā pa vidu šaubos vai izdotos trāpīt
Back to top
View user's profile
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Mon Feb 15, 2010 7:42 pm    Post subject:

pieskaiti ātrumu, kad nospied taustiņu, vai arī, kad ir pagājis noteikts laiks kopš iepriekšējās, pieskaitīšanas reizes.
Back to top
View user's profile
Arrovs



Joined: 10 Mar 2007
Posts: 96
Location: Saldus

PostPosted: Tue Feb 16, 2010 1:15 pm    Post subject:

Ir vairāki veidi. Piemēram apakšā glabāt masīvu, kas satur kvadrātu bildītes.
Šādā gadījumā nospiežot pogu objekts pārleks uz citu masīva vērtību noskenēs tajā esošā kvadrāta atrašanās vietu un nocentrēsies uz tā.(Šis, ja veido, ko sarežģītu visā būtībā, piemēram necaurejami kvadrāti utt.).

Citkārt pie šāda paša veida koda pieliekot pārbīdi uzreiz lauciņa platumā ieliec vienu papildus mainīgo, kura nospiešanas brīdī kļūst false un atlaižot true vai ar fiksē taustiņa nospiestības stāvokli izmantojot tos pašus downus.

Ja kādu laiku nespēsi atkost, ko teicu ieliekšu postu ar abiem variantiem.
_________________
Arrovs komanda
Back to top
View user's profile Visit poster's website
snwlv



Joined: 10 Jan 2010
Posts: 86

PostPosted: Tue Feb 16, 2010 2:41 pm    Post subject:

njam Very Happy tikai vakar sapratu Very Happy vnk pirmtam nejiebraucu
uzpiežot atri (neturot tautiņ) viņš pārlec par 200px jeb tā kā man vajag,bet ja patur ilgkāk aizbrauc par tālu.. itka izveidoju taimeri bet nezinu ko man tajā ievietot.
Code:
taimerisLauks += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
            if (taimerisLauks > taimInt)
            {

               //nav ne jausmas ko lai šeit ievieto...

            taimerisLauks = 0f;
            }
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Tue Feb 16, 2010 2:55 pm    Post subject:

Vajag pavisam citādāku taimeri.

Kad uztaisa:
Time=0
Katru kadru:
if( Time > 0 ) Time -= 1; // vai Time -= delta_time; vai vēl kaut ko tādu..
Kad nostrādā kaut kāds IFs:
if( Time <= 0 ){ ierakstām_kodu_šeit; Time = cik_ilgi_aizliegt_izpildī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: Tue Feb 16, 2010 3:25 pm    Post subject:

Iesaku, labāk, ko tādu:

Code:

float tCurrent = getCurrentTime();

if(tCurrent - tStart > tWait)
{
   if(taustinjsh_nospiests)
   {
      speed = rutinjas_izmers;
      tStart = tCurrent;
   }

   // utt
}
Back to top
View user's profile
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: Tue Feb 16, 2010 4:14 pm    Post subject:

Vai arī izpildīt pārlecienu nevis onKeyPressed, bet onKeyReleased. Tad tas izpildīsies tikai atlaižot klaviatūras taustiņu - tikai vienreiz par katru nospiedienu.
_________________
...un es uzskatu, ka Fallout ir etalons
Back to top
View user's profile Send e-mail Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Grafikas programmēšana un teorija 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