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

Ātrum kārbas simulēšana

 
dev.gamez.lv Forum Index -> Iesācējiem
View previous topic :: View next topic  
Author Message
WhiteFalcon



Joined: 16 May 2010
Posts: 102
Location: Rīga

PostPosted: Sun Oct 17, 2010 1:23 pm    Post subject: Ātrum kārbas simulēšana

Sveiki.Vēlos pajautāt vai kāds nevar izpalīdzēt vai vismaz idejas padot ātrumkārbas simulēšanai.Sēdēju ~ 2h un visādi meiģināju simulēt bet nesanāk. Meiģināju
ar switch

Code:

            switch(RobaID)
            {
            case 0: AutoAtrums = -2; break;//AtpakalGaita
            case 1: AutoAtrums = 0; break;//Neitralais
            case 2: AutoAtrums = +1; break;//1Robs
            case 3: AutoAtrums = +0.6f; break;//2Robs
            case 4: AutoAtrums = +0.3f; break;//3Robs
            case 5: AutoAtrums = +0.1f; break;//4Robs
            case 6: AutoAtrums = +0.01f; break;//5Robs
            case 7: AutoAtrums = +0.001f; break;//6Robs
            case 8: AutoAtrums = +0; break;//Max
            }


Modeļa ātrumu nosaka ThrustForce
meiģināju salikt pa atrumiem

Code:
 if (ThrustForce >= 39)//2
                {
                    RobsSP = 3;
                }
                if (ThrustForce >= 69)//3
                {
                    RobsSP = 4;
                }
                if (ThrustForce >= 99)//4
                {
                    RobsSP = 5;
                }
                if (ThrustForce >= 149)//5
                {
                    RobsSP = 6;
                }
                if (ThrustForce >= 220)//6
                {
                    RobsSP = 7;
                }

if (RobsSP == 0)
            {
                RobaID = 0;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 1)//Neitrals
            {
                RobaID = 1;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 2)
            {
                RobaID = 2;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 3)
            {
                RobaID = 3;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 4)
            {
                RobaID = 4;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 5)
            {
                RobaID = 5;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 6)
            {
                RobaID = 6;
                ThrustForce += AutoAtrums;
            }
            if (RobsSP == 7)
            {
                RobaID = 7;
                ThrustForce += AutoAtrums;
            }


Itkā atrums pieaug bet atlaīžot gāzi izmantoju līdzigu principu bet ātrums un "Robi" nepārsledzas..
+ attelojot ātrumu rādas komati. Vai nav kāds veids kā var noapalot?
piem ja ir 132.645784 uz 132?
varbūt ir kādi citi veidi Confused
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: Sun Oct 17, 2010 2:30 pm    Post subject:

Par apaļošanu - floor/ceil/round funkcijas.
Par ātrumkārbu - pasērčo šajā lapā http://regedit.i365.pl/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html tekstu "gear ratio", tur visādas formulas atradīsi.
Šeit arī daudz labas informācijas: http://phors.locost7.info/contents.htm
Back to top
View user's profile Send e-mail
WhiteFalcon



Joined: 16 May 2010
Posts: 102
Location: Rīga

PostPosted: Sun Oct 17, 2010 8:27 pm    Post subject:

emu šitos skatijies nevienu vie reizi + neizprotu un nezinu ka pielietot dažas no tam formulām

šeit ja pareizi sastadiju fomulu tad atrums 1 "robā" sanāk kkur 35km/h Very Happy
Code:
 V = 88f * RobaGKID * 3.42f * 0.7f / 6.0f;

bet ka lai automatize ?
Back to top
View user's profile
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Sun Oct 17, 2010 11:32 pm    Post subject:

Es neredzu, kur tu ņem vērā cik tālu nospiests gāzes pedālis. Un ātrumu pa taisno no motora nekad nerēķina. Parasti rēķina spēku, pēc tam ar fizikas formulām (ņemot vērā svaru, berzi utt.) aprēķina ātrumu.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
WhiteFalcon



Joined: 16 May 2010
Posts: 102
Location: Rīga

PostPosted: Mon Oct 18, 2010 12:25 am    Post subject:

par kādu pedaļa nospiešanu iet runa ?

formulu ņēmu no šejienes

Quote:
Fdrive = u * Tengine * xg * xd * n / Rw
where
u is a unit vector which reflects the car's orientation,
Tengine is the torque of the engine at a given rpm,
xg is the gear ratio,
xd is the differential ratio,
n is transmission efficiency and
Rw is wheel radius.


priekš xg izmantoju switch principu katram ātrumam sava vērtība.
Back to top
View user's profile
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Mon Oct 18, 2010 1:15 am    Post subject:

Ar šo formulu tu aprēķini dzinēja spēku. Lai tiktu līdz ātrumam, tev nāksies izmantot vēl virkni ar formulām (tas, ko es rakstīju iepriekš).
Pedāļa nospiešana = cik % ir nospiests gāzes pedālis. BMW gadījumā tas parasti ir 100%.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
WhiteFalcon



Joined: 16 May 2010
Posts: 102
Location: Rīga

PostPosted: Tue Oct 19, 2010 1:17 pm    Post subject:

Kāds vismaz varētu nosaukt pāris no formulām ?
1 būtu berze. kas vēl ?
ja tas ko es aprēķiāju sanak dziēja spēks tad kā lai aprēķia ātrumu ?
Iegūtie spēki:
1Robs: 35,112
2Robs:70,224
3Robs:105,336
4Robs:140,448
5Robs:175,56
6Robs:210,672
Back to top
View user's profile
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Tue Oct 19, 2010 2:42 pm    Post subject:

Nu tev tak 2. postā atbildēja: http://regedit.i365.pl/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html
Tur ir visas tev vajadzīgās formulas, ja vēlies ko tādu izveidot, tad nāksies pašam lasīt.
Ja tiešām to nevari, varu tev pāris formulas izvilkt:
Ftraction = u * Engineforce
Fdrag = - Cdrag * v * |v|
Frr = - Crr * v
Flong = Ftraction + Fdrag + Frr
a = F / M
v = v + dt * a
Lūdzu!
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
WhiteFalcon



Joined: 16 May 2010
Posts: 102
Location: Rīga

PostPosted: Tue Oct 19, 2010 9:07 pm    Post subject:

Liels paldies elvman

man jau ir daļa no šīm formulām... bet formulās nav tas ko sākumā jautāju... man ar pretestībām,berzēm untt nebūtu problēmas bet mani intresē tas kāds auto ātrums attiecībā pēc "robu"
tik pat mierīgi es varētu uzlikt komandu Atrums++;
Man tur nevajag kodu virknes kas apreiķina precizitati lidz 0,1. Vajag vienkāršu formulu 1 vai 2 pārējās es pats samemeklētu.
Ja intresē tad izmantoju šīs formulas

Code:
force = Direction * thrustAmount * ThrustForce;
            acceleration = force / Mass;
            Velocity += acceleration * elapsed;
            Velocity *= DragFactor;
            Position += Velocity * elapsed;

viss notiek objekts pārvietojas.. bet ar vienu noteiktu ātrumu.
Back to top
View user's profile
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Wed Oct 20, 2010 12:06 am    Post subject:

Kāpēc tu ātrumu reizini ar dragFactor? Laikam neesi skatījies formulas.
Īsti nevaru atrast vietu, kāpēc tev mašīna ceļo vienā ātrumā. Tai vajadzētu vai nu stāvēt uz vietas (ja elapsed == 0) vai arī pastāvīgi paātrināties līdz bezgalībai.
Bet kopumā kods atšķirībā no pirmā izskatās jau tuvāk tam, ko tu gribi.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
WhiteFalcon



Joined: 16 May 2010
Posts: 102
Location: Rīga

PostPosted: Wed Oct 20, 2010 8:33 am    Post subject:

tas formulas ko iedevu jau man pastav kopš laika kad uzdevu jautajumu Very Happy
public const float DragFactor = 0.98f;
ja neizmantoju viņu auto nav savācams vienkārši slīd nepartraukti Very Happy
par elapsed izmantoju
Code:
 float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
Back to top
View user's profile
elvman
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 09 Apr 2003
Posts: 1278
Location: Kuldiga

PostPosted: Wed Oct 20, 2010 3:33 pm    Post subject:

Nu pag vecīt, tu nevari vienkārši ņemt maģisku konstanti un reizināt ar ātrumu. Tā tev tur nekad nekas nestrādās kā vajag. Ej secīgi pēc formulām un viss buš kā vajag. Tad, kad jau esi ieguvis ātrumu tad viss, tas arī ir fināla ātrums ar ko tu ceļo. Nevajag to vairs ne ar ko reizināt.
_________________
long time; /* know C */
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Iesācējiem All times are GMT + 2 Hours
Page 1 of 1

 
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