Freitag, 19. Juli 2019, 14:04 UTC+2

Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: 3D-Gamestudio Hobbyschmiede. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Leosubaru

Fortgeschrittener

Beiträge: 195

Wohnort: Österreich

Beruf: Student ab Oktober 2012

Gamestudio: A7

1

Dienstag, 31. Juli 2012, 15:39

Autos - Physik -Engine - Schwerkraft...

Hallo, ich bin es mal wieder :p

Als Kind habe ich damals immer Funkflitzer gespielt.. vielleicht der eine oder andere auch :-)
Um ein bisschen Abwechselung von meinem Hauptprojekt zu bekommen(komme mit den Quests nicht weiter :D ), will ich
mich auch mal an das Racing Genre rantasten und dabei weiter Erfahrungen sammeln.
Ich will jetzt mehr ein Fun-Racing Game erstellen und kein Simulator.
Dennnoch möchte ich den Autos Schwerkraft einhauchen. Ich habe schon einiges probiert und im
Handbuch das Kapitel ein paar mal durchgelesen.

Wäre auch der Hammer, wenn sich das Auto in Kurven überschlagen kann (Aber mich würde erstmal interessieren, wie man die Befehle
aus Seite 134 im Handbuch umsetzt)


Hier ist mein jetziger Code.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
///////////////////////////////
#include <acknex.h>
#include <default.c>
#include <mtlFX.c>
///////////////////////////////

ENTITY* car="car.mdl";
var speed=0;


function camera_follow(ENTITY* ent)
{
  while(1)
  {
   vec_set(camera.x,vector(-250,0,100)); 
   vec_rotate(camera.x,ent.pan);
   vec_add(camera.x,ent.x); 
   vec_set(camera.pan,vector(ent.pan,-20,0));
   wait(1);
  }
}


function main()
{
   video_mode=12;
   video_screen=1;
   level_load("racing.WMB");
}

action my_car()
{
 camera_follow(me);
 //ph_setgravity(vector(0,0,-100));
 //phent_settype(car, PH_RIGID, PH_SPHERE);
 //phent_setmass(car, 30,PH_SPHERE);
 while (1)
 { 

      
                                    //Rechs-linkslenken- Vorwärts-Rückwärts
                                      if (key_a && key_w)
                                          my.pan -= -0*time_step; 
			
			
			
		if (key_d && key_w)
		   my.pan -= 0*time_step; 
		   
		   
		if (key_d && key_s)
		   my.pan -= -1*time_step; 
			
			
			
		if (key_a && key_s)
		   my.pan -= 1*time_step;   
		   

    
    //Beschleunigung vorwärts
      if (key_w && speed<20) 
         speed+=0.6*time_step; // Beschleunigung
         
      else 
      if(speed>0) 
      speed -= 0.5 * time_step; 
        
         c_move (my, vector(speed*time_step, 0, 0), nullvector, GLIDE); 

 
   //Beschleunigt rückwärts
      if (key_s && speed<10) 
      speed-=0.2*time_step; // Beschleunigung
      
       else // sonst
      if(speed>0) //solange speed grösser als null ist
      
      c_move (my, vector(speed*time_step, 0, 0), nullvector, GLIDE); 

 
   //Bewegt Auto nach links, wenn man kein Gas mehr gibt
      if (key_a && speed>0)
		my.pan -= -3*time_step; 
	
	//Bewegt Auto nach rechts, wenn man kein Gas mehr gibt	
		if (key_d && speed>0)
		my.pan -= 3*time_step; 
		
		
		//Bremsen	
		if (key_space && speed>0)
		speed-=0.5*time_step;
		
		
      wait (1);
 }
}


Hoffentlich ist das so einigermaßen verständlich :1
Gruß
Leosubaru

MrBarsack

Schüler

Beiträge: 126

Wohnort: Witten

Gamestudio: A7

2

Mittwoch, 1. August 2012, 12:48

Du darfst nicht mehr "c_move" verwenden, sondern musst die Physik Funktionen für Bewegung verwenden.

Leosubaru

Fortgeschrittener

Beiträge: 195

Wohnort: Österreich

Beruf: Student ab Oktober 2012

Gamestudio: A7

3

Mittwoch, 1. August 2012, 15:21

Ok danke :D Hab ich mir fast schon gedacht.
Dann werde ich das nochmal überarbeiten

Leosubaru

Fortgeschrittener

Beiträge: 195

Wohnort: Österreich

Beruf: Student ab Oktober 2012

Gamestudio: A7

4

Freitag, 3. August 2012, 23:41

Ich habe jetzt ein Physik-Auto mithilfe eines Tutorials erstellt und einen eigenen funktionierenden Cameracode. (Sorry musste ich jetzt mal fett markieren :D )

Allerdings rauben mir Partikles den letzten Nerv :D
Wie kann ich dem blöden Bild sagen, dass es an einem Vector bleibt.
(Mit Vec_for_vertex.. nur wie genau...)

Ich habe jetzt massig durchgeschaut und probiert... es will einfach nicht. Ich habe ein Tutorial durchgearbeitet.. allerdings für A6..
Ich kann inzwischen nur einfache Partikels, die an einer Stelle vor sich hin funkeln. Ich hätte gerne ein Particle am Auspuff bzw an den Reifen.
Aber ich will eigentlich nur wissen wie es geht :p

Kann mir einer viellicht ein bisschen Nachhilfe geben?
Vector vom Modell 475. (Auspuff)

Gruß
Leosubaru

EDIT:
Noch eine Frage :p
Also ich will meinem Auto ein kleines "Schadensmodell" zufügen.
Mit Java etc gibt es ja zum Glück if else...
Also ich hab im Forum schon so ein ähnliches Problem gesehen.
Quellcode wäre mit zu vielen If nicht gut...

Also wie würde ich das schön verpacken? Ich hab schon ein paar Sachen ausprobiert.


if(69> motor >60)
if(69>= motor >=60)
if(69>= motor && <=60)

So soll das grob funktionieren :1

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
		speed_contr = (key_w && tank >0 && reifen >0);//w = 1, s = -1, w & s = 0
	
		if(motor>=90)
		{
		ang_force = speed_contr * 800 * time_step;
   	}
   	
		if(89 >= motor && motor >80)
		{
		ang_force = speed_contr * 700 * time_step;
    	}
    	
    	if(79> motor >70)
		{
		ang_force = speed_contr * 600 * time_step;
    	}
    	
    	if(69> motor >60)
		{
		ang_force = speed_contr * 500 * time_step;
    	}
    	
    	if(59> motor >50)
		{
		ang_force = speed_contr * 400 * time_step;
    	}
    	
    	if(49> motor >40)
		{
		ang_force = speed_contr * 200 * time_step;
    	}
    	
    	if(39> motor >30)
		{
		ang_force = speed_contr * 50 * time_step;
    	}
    	
    	if(29> motor >20)
		{
		ang_force = speed_contr * 10 * time_step;
    	}
    	
    	if(19> motor >10)
		{
		ang_force = speed_contr * 2 * time_step;
    	}
    	else
    	{
    	ang_force = speed_contr * 0 * time_step;	
    	}

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Leosubaru« (4. August 2012, 00:42)


MrBarsack

Schüler

Beiträge: 126

Wohnort: Witten

Gamestudio: A7

5

Samstag, 4. August 2012, 08:27

In Lite-C gibt es aber auch if-else,
so wie in fast jeder anderen Sprache :)
(else if auch!)

Leosubaru

Fortgeschrittener

Beiträge: 195

Wohnort: Österreich

Beruf: Student ab Oktober 2012

Gamestudio: A7

6

Samstag, 4. August 2012, 09:56

Ok danke :D
Hab ich wohl ganz am Anfang was falsches aufgeschnappt in irgendeinem Forum und es mir gemerkt. :1

Bleibt nur noch die Frage, wie ich ein Partikel an einem Vertex befestigen kann. (Kleiner Codebeispiel oder so) :D
Gruß
Leosubaru

Ähnliche Themen

Thema bewerten