Kollisionserkennung PROBLEM!! Brauche Hilfe!!

Posted By: dkstudio

Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/23/07 18:23

Hallo,
ich habe jetzt seit ca. 3 wochen 3D Gamestudio. Ich schaffe es aber noch nicht, mit der Kollisionserkennung zu arbeiten. Ich habe eine Entity und will, wenn sie gegen etwas stößt, dass eine function ausgelößt wird. Ich schaffe es einfach nicht. Könnte mir jemand einen vollständigen Script schicken. Bitte helft mir. Danke schon im Voraus.
Posted By: TSG_Torsten

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/24/07 18:02

Code:

function collisions_event()
{
if(event_type==event_impact) && (you==player)
// Eine Entity hat diese Entity berührt? Und die Entity war der Spieler?
{
beep;//führe das hier aus...
}
}

action kollisions_erkenner()
{
my.enable_impact=on; // sensitiv für Berührungen
my.event=collisions_event; // führe die Funktion aus
//... weiterer code
}


Viel Spaß und wenns nicht klappt, nochmal schreiben

Gruß
TSGames
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/24/07 19:32

Hi,
danke erstmal für die schnelle Antwort. Aber wenn ich den Script ins Programm einfüge, erkennt das Programm event_impact nicht. Muss ich da noch etwas einfügen mit dem include befehl? oder bin ich nur zu doof??

Gruß dkstudio
Posted By: Anonymous

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/24/07 19:52

sag mal welche GameStudio Version du hast, kann ja vielleicht sein das das ein Code ist der Befehle enthält, die nicht bei deiner Version funktionieren
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/25/07 11:16

Ich habe Version 7 extra.
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/26/07 15:22

Ich setze hier mal meinen gesamten Code hinein. Könnt ihr Fehler entdecken. Wenn ja, bitte melden. Danke
Code:
 ////////////////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>

////////////////////////////////////////////////////////////////////

ENTITY* traktor;

///////////////////////////////////////////////////////////////////



function vor()
{
while(key_w)
{
c_move(traktor, vector(2 * time_step, 0, 0), nullvector,GLIDE);
wait(1);
while(key_d)
{
traktor.pan -= 1;
c_move(traktor, vector(2 * time_step, 0, 0), nullvector,GLIDE);
wait(1);
}
while(key_a)
{
traktor.pan += 1;
c_move(traktor, vector(2 * time_step, 0, 0), nullvector,GLIDE);
wait(1);
}
}

}



function zurueck()
{
while(key_s)
{
c_move(traktor, vector(-2 * time_step, 0, 0), nullvector, GLIDE);
wait(1);
while(key_d)
{
traktor.pan += 1;
c_move(traktor, vector(-2 * time_step, 0, 0), nullvector,GLIDE);
wait(1);
}
while(key_a)
{
traktor.pan -= 1;
c_move(traktor, vector(-2 * time_step, 0, 0), nullvector,GLIDE);
wait(1);
}

}
}

function collisions_event()
{
if(event_type==event_impact) && (you==player) // Eine Entity hat diese Entity berührt? Und die Entity war der Spieler?
{
traktor.z = 30;
}
}

action kollisions_erkenner()
{
traktor = my;
my.enable_impact=on; // sensitiv für Berührungen
my.event=collisions_event; // führe die Funktion aus

}



function main()
{
video_screen = 2;
video_mode = 8;
level_load ("dennis_test.wmb");
wait(2);
vec_set(camera.x, vector(46, -600, 738));
vec_set(camera.pan, vector(91, -57, 0));
on_w = vor;
on_s = zurueck;


}


Posted By: rvL_eXile

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/26/07 16:16

Habs mal was überarbeitet...

Wennde net damit zurecht kommst poste eine ausführliche Fehler beschreibung und was du gemacht hast...


Code:

Var video_screen = 2;
Var video_mode = 8;

entity* Traktor;

function vor()
{

while(1)
{
if(key_w==1)
{
c_move(traktor, vector(2 * time_step, 0, 0), nullvector,GLIDE);

}

if(key_d)
{
traktor.pan -= 1*time_step;
c_move(traktor, vector(2 * time_step, 0, 0), nullvector,GLIDE);//was soll das? Hiermit fährt er dann immer noch, soll er sich nicht nur drehen?

}
if(key_a)
{
traktor.pan += 1*time_step;
c_move(traktor, vector(2 * time_step, 0, 0), nullvector,GLIDE);//s.o.

}

if(key_s)
{
c_move(traktor, vector(-2 * time_step, 0, 0), nullvector, GLIDE);

}
wait(1);
}

}



function collisions_event()
{
if(event_type==event_impact) && (you==player) // Probier auch den my Pointer aus wenns net geht
{
Error("Kollision!!!");
}
}

action kollisions_erkenner()
{
traktor = my;
my.enable_impact=on; // sensitiv für Berührungen
my.event=collisions_event; // führe die Funktion aus

}



function main()
{

level_load ("dennis_test.wmb");
wait(2);
vec_set(camera.x, vector(46, -600, 738));
vec_set(camera.pan, vector(91, -57, 0));

}



cYa Sebastian
Posted By: rvL_eXile

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/26/07 17:32

Hier nochmal ein anderes Script, das habe ich ausprobiert, das funktioniert, musst du nur noch anpassen:

Code:

Var Video_Mode=8; // Auflösung liegt nun bei 1024*768, sehen Sie bitte ins Handbuch um weitere Auflösungen und Erklärungen zu bekommen
Var Video_Screen=2; // Nun wird das Spiel im Fullscreen Modus gestartet, wenn der Wert =2; ist, wird das Spiel im Fenster Modus gestartet.
Var Video_Depth=16; // Das heisst das die Farbtiefe Ingame bei 16 Bit liegt, bei =32; wird die Farbtiefe mit 32 Bit dargestellt.



Var Spieler_vorne=17; //Taste W um den Spieler nach vorne zu bewegen

Var Spieler_hinten=31; // Taste S benutzen wir um den Spieler nach hinten zubewegen

Var Spieler_links_Drehung=30; // Die Taste A benutzen wir um den Spieler nach links zudrehen

Var Spieler_rechts_Drehung=32; // Die Taste D benutzen wir um den Spieler nach rechts zudrehen

Var Spieler_Bewegung; // Vector für die Spieler bewegung

Entity* Player; // Weisst einer Entity den Namen "Player" zu

Function Kollision
{
if(my==player|| event_type==event_entity)
{
error("Kollision funzt");
}
}


Action player_move
{
player=my; // Ich bin jetzt die Spielfigur

my.enable_entity=on;
my.event=Kollision;

while(1) // Führe die { Anweisung } immer aus

{
Spieler_Bewegung.X = (key_pressed(Spieler_vorne)-key_pressed(Spieler_hinten))*10*time;
Player.pan-=10*(mouse_force.x+(key_pressed(Spieler_rechts_Drehung)-key_pressed(Spieler_links_Drehung)))*time;

Camera_Pos(); // Weise dem Spieler die Function der Kamera zu

c_move(my,Spieler_Bewegung,vector(0,0,0), glide);


wait(1);
}
}

Function Camera_Pos()
{
camera.genius = player;
camera.x = player.x-100;
camera.y = player.y;
camera.z = player.z+40;
camera.pan = player.pan;
}



Function Main
{

load_level("Tut_Level.wmb");//Lade das Level "Tut_Level.wmb"
}




cYa Sebastian
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/27/07 14:19

Hallo
danke für die antworten. aber wenn ich den Code in den SED einfüge und starten will, gibt es eine Fehlermeldung:

...
'event_impact' undeclared identifier
...

Wieso erkennt er den Befehl nicht? Helft mir bitte!
Posted By: rvL_eXile

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/27/07 14:40

Das kommt, das das cript was ich gepostet hab C-Script ist und nicht Lite-C , das solltest am Anfang besser immer erwähnen welche GS Version und obs Lite-C oder C-Script ist...

Jetzt kann ich dir leider net mehr helfen...

cYa Sebastian
Posted By: xxxbmxsam

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/27/07 15:57

Ich könnte dir vielleicht helfen......ist es den egal was dein player auslöst oder muss das was ganz bestimmtes sein?
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/27/07 16:08

Ok, sorry...
hab ned drangedacht.
Trotzdem danke
Posted By: xxxbmxsam

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/27/07 17:45

wie meinst du das jetzt
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/28/07 14:59

hi
sorry. hab nicht gesehen dass du geschrieben hast.
Zu deiner Frage: Es ist egal was der Player auslöst. kannst du mir helfen?

Gruß dkstudio
Posted By: xxxbmxsam

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 09/30/07 16:23

Ja kann ich warte montag schreib ich dir wieder mit dem code bis dann.
Posted By: xxxbmxsam

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/01/07 18:25

AUM MAGAZIN NR.27


F: Kann ich eine Entity erstellen, ihr eine Action geben und wenn mein Spieler sie berührt, spielt die Engine eine Avi-Datei mit Sound?
A: Sicher. Benutzen Sie diesen Code:
//////////////////////////////////////////////////////////////////////////////////////////////
action avi_trigger
{
my.passable = on;
while (player == null) {wait (1);}
while (vec_dist(my.x, player.x) > 100) {wait (1);}
media_play("test.avi", null, 100);
}
//////////////////////////////////////////////////////////////////////////////////////////////

Diesen ActionCode kannst du irgendeinem model geben und wen du ihn berührst dann spielt er ein video ab mit sound du kannst aber auch nur einen sound abspielen lassen hier nochmal der code jetzt spielt er nur den sound ab

action avi_trigger
{
my.passable = on;
while (player == null) {wait (1);}
while (vec_dist(my.x, player.x) > 100) {wait (1);}
media_play("test.wave", null, 100);
}

du musst diese zeile hier ändern media_play("test.wave", null, 100);

in

media_play("mymusik.wave",null,100);

das mymusik ist der name deines musikstückes vergess aber nicht dein lied in den work ordner zu kopieren oder reinzuschieben oder wie auch immer......den code musst du natürlich auch in deinem spiel reinkopieren.


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

AUM MAGAZIN NR.43

F: Wenn ich nach einer Box trete, wie kann ich sicher gehen, das diese zur gegenüberliegenden bewegt wird, ohne die ursprünglichen Pan und Tilt Winkel zu verlieren.
A: Verwenden sie den folgenden Code. Rennen Sie in die Box um diese zu bewegen.

function move_boxes()
{
vec_rotate (vector(2 * (my.x - player.x) * time, 0, 0), player.pan);
vec_add (my.x, vector(2 * (my.x - player.x) * time, 2 * (my.y - player.y) * time, 0));
}

action my_box
{
while (player == null) {wait (1);}
my.enable_impact = on;
my.enable_entity = on;
my.event = move_boxes;
}



einfach kopieren und in dein spiel einfügen.....dann dein spiel neu starten und dann deinem model die action zuweisen...fertig.



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



AUM MAGAZIN NR.42


F: Wäre es möglich, Lichter, welche nahe dem Player sind, automatisch anzuschalten auch wieder aus, wenn der Player wieder von den Lichtern weg geht?
A: Kopieren Sie den folgenden Code ans Ende ihres Scripts und geben Sie den Lichtern die Action „nice_lights“.

action nice_light
{
while (player == null) {wait (1);}
my.lightred = 200;
my.lightgreen = 220;
my.lightblue = 100;
my.light = on;
while (1)
{
if (vec_dist (player.x, my.x) < 500) // play with 500
{
my.lightrange = 300;
my.ambient = 100;
}
else
{
my.lightrange = 0;
my.ambient = -100;
}
wait (1);
}
}








/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


AUM MAGAZIN NR.50

F: Wie erreiche ich es, dass meine Entity nach Berührung die Nachricht “Hi! I am Darth Vader!” anzeigt?
A: Hier ist ein Beispiel:

text darth_txt
{
layer = 15;
pos_x = 200;
pos_y = 5;
font = _a4font;
string = "Hi! I am darth vader";
}

function say_line()
{
darth_txt.visible = on;
sleep (2); // display the line for 2 seconds
darth_txt.visible = off;
}

action darth_vader
{
my.enable_touch = on;
my.event = say_line;
}



//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Also dieser code hier ist am besten mein dank geht an den typen der diesen code frei zugänglich gemacht hat für uns....

RESPEKT du bist nicht nur gross du bist grösser

leider weiss ich nicht in welchem aum magazin dieser code hier ist aber ich glaube das du das noch
herausfindest...aum magazin ab 51

var kick_speed;



action physics_box

{

ph_setgravity (vector(0, 0, -386));

phent_settype (my, ph_rigid, ph_box);

phent_setmass (my, 20, ph_box);

phent_setfriction (my, 50);

phent_setdamping (my, 50, 50);

phent_setelasticity (my, 30, 30);

while (!plBiped01_entity) {wait (1);} // make sure to use your own player pointer name everywhere in this action

while (1)

{

kick_speed.x = 75; // kick speed

kick_speed.y = 0;

kick_speed.z = 40; // make it jump up a bit as well

vec_rotate(kick_speed, plBiped01_entity.pan); // kick it depending on player's angle

if (vec_dist (plBiped01_entity.x, my.x) < 70) // 70 is the distance that triggers the kicking

{

phent_addvelcentral(my, kick_speed); // kick the box

}

wait (1);

}

}
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/03/07 12:37

Hi
super!! Danke, werd ich gleich ausprobieren.
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/03/07 17:36

ich habe das jetzt versucht, aber wenn ich das Erste eingebe und das Programm starte, kommt die Fehlermeldung:
'passable' is not a member of 'ENTITY'
Was heißt das??
Posted By: xxxbmxsam

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/06/07 14:56

hast du den ersten code deinem model gegeben...also avi trigger...und wen ja dann weiss ich auch nicht versuchs mal mit dem model cbabe und gib ihr den code manche models können die action einfach nicht kapieren aber die standartmodels von 3dgs kapieren das musst mal schaun funktionieren den die anderen codes????
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/10/07 13:21

Vielleicht mache ich ja schon vorher Fehler. Ich fange mal von ganz vorne an. Also, ich erstelle ein Model in MED. Dann erstelle ich ein Terrain. Und dann?
Posted By: xxxbmxsam

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/11/07 18:06

ok ok das ist zuviel für mich....ey man wen ich versuche dir zu erklären was nach einem model und einem Terrain kommt
sitze ich noch morgen vor der tastatur .....aber wen du willst
kann ich dir ein videotutorial machen....
musst aber das videotutorial im internetcafe abspielen weil
ich nicht weiss ob ich virus hab
....mir ist das nämlich egal ob ich ein virus hab oder nicht
....soweit er mein prozessor nicht übertaktet .
Um das video abspielen zu können muss man ein flash player besitzen.
Posted By: dennis

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/11/07 19:12


Hast du schon die lite-c tutorials gemacht?

Dort sind zumindest die ersten Script-Schritte erklärt.

Ich kann dir leider hier nicht mehr viel helfen da ich morgen in den Urlaub fahre....aber wenn du nicht weiter kommst gibt es ja auch noch die Manual...

Probier einfach mal ein paar Sachen aus...(AUMs/work folder)
Posted By: ARAS

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/14/07 19:11

Hallo dkstudio,

bist Du mit Deinen Events schon weiter gekommen? Wenn ja, ignoriere diesen Tread
hier einfach. Falls es noch nicht geklappt hat, habe ich Deine Funktionen einmal so umgeschreiben,
daß es jetzt eigentlich funktionieren sollte.
Zur Steuerung Deines Players benötigst Du nur ein c_move, das ist einfacher und
übersichtlicher für die Funktion.
Ganz wichtig in C-Lite ist die Klein- und Großschreibung von Befehlen. Wenn hier etwas
nicht stimmt bekommst du sofort eine Fehlermeldung.
Ich schreibe Dir jetzt den Code einmal auf. Weise Deiner Entity einfach den Befehl
kollisions_erkenner() zu und sollte Deiner Entity jetzt ein Block oder eine andere
Entity in die Quere kommen wird sofort das Fehlerfenster eingeblendet.

Code:
 ////////////////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>

////////////////////////////////////////////////////////////////////

ENTITY* traktor;

///////////////////////////////////////////////////////////////////

function main()
{
video_screen = 2;
video_mode = 8;
level_load ("dennis_test.wmb");
wait(2);
}

function collisions_event(); // Prototype der Funktion

VECTOR traktor_speed;

function Camera_Pos()
{
camera.genius = traktor;
vec_set(camera.x,vector(-100,0,20)); // Vektor der Kamera auf einen negativen x-Wert setzen
vec_rotate(camera.x,my.pan); // Vektor der Kamera um Player Vektor drehen
vec_add(camera.x,my.x); // Vekroren des Player und der Kamera addieren
vec_set(camera.pan,my.pan); // Kamera in Player Sichtrichtung drehen
}


function Bewegung()
{
vec_set(traktor_speed.x,nullvector);
traktor_speed.x = 5 * (key_w - key_s) * time_step; // Nach vorne und zurück bewegen
traktor.pan += 4 * (key_a - key_d) * time_step; // Drehung über pan-Winkel
c_move(my,traktor_speed.x, nullvector,GLIDE); // Bewegung des Players
}

action kollisions_erkenner()
{
traktor = my;
my.emask = ENABLE_BLOCK | ENABLE_IMPACT | ENABLE_ENTITY; // Kollisionsevents zuweisen
my.event = collisions_event;
while(1)
{
Bewegung(); // Player Bewegung
Camera_Pos(); // Kamera Bewegung
wait(1);
}
}

function collisions_event()
{
if(event_type == EVENT_IMPACT || event_type == EVENT_BLOCK || event_type == EVENT_ENTITY)
{
error("Dies ist ein Test");
}
}



Ich hoffe das löst Deine Probleme etwas.

MFG

ARAS
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/17/07 15:21

Hi
JUHU!! Wenn ich deinen Code eingebe, funktioniert es. Vielen Dank. Super!!

Gruß dkstudio
Posted By: dkstudio

Re: Kollisionserkennung PROBLEM!! Brauche Hilfe!! - 10/19/07 15:36

Ich wollte noch mal allen danken, die mir geholfen, oder es versucht haben mir zu helfen. Danke für eure Mühe.
Gruß dkstudio
© 2024 lite-C Forums