Gamestudio Links
Zorro Links
Newest Posts
How to buy tomorrow at open?
by frutza. 06/01/23 19:58
Adding Position to Current Trade
by AndrewAMD. 05/30/23 10:34
Unable to change multiplier of contract
by vicknick. 05/30/23 06:56
Wrong Definition of Sharpe Ratio in Zorro?
by vicknick. 05/29/23 06:32
Backtest strategy on bitcoin/crypto
by JamesHH. 05/26/23 04:36
Return type of floor()
by AndrewAMD. 05/25/23 14:17
AUM Magazine
Latest Screens
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Hecknex World
Who's Online Now
1 registered members (AndrewAMD), 1,065 guests, and 8 spiders.
Key: Admin, Global Mod, Mod
Newest Members
BInnacle, androsa, XquicksnowX, danishinvest, Trail
18942 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Objekteigenschaften #378341
07/22/11 16:59
07/22/11 16:59
Joined: Jul 2011
Posts: 5
N
natrox Offline OP
Newbie
natrox  Offline OP
Newbie
N

Joined: Jul 2011
Posts: 5
Hallo Leute,

ich habe mir vor kurzem Gamestudio A8 runtergeladen und habe mich ein wenig versucht.

Teile aus dem online Tutorial nach programmiert und bin auf ein Problem gestoßen.

Ich habe ein Avatar programmiert, der in der Lage ist vorwärts zu laufen bis er auf ein Objekt trifft.
Die Kollisionsdaten, sprich x,y Koordinaten kann ich auslesen.

Nun möchte ich das der Avatar automatisch um das Objekt rumläuft. Gibt es dafür eine Möglichkeit oder ein Tutorial um dies zu realisieren?

Oder hat einer einen Tipp, wie ich die Objekteigenschaften, sprich der Name, Breite und Höhe des Objektes mit dem der Avatar kollidiert auslesen kann?

Gruß,
natrox

Re: Objekteigenschaften [Re: natrox] #378344
07/22/11 17:23
07/22/11 17:23
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Du kannst einen Strahl (c_trace) von Deinem Charakter nach vorne senden, wenn der Strahl auf ein Objekt trifft, gibt er den Abstand und setzt den you-Pointer auf das Objekt, über den Du Eigenschaften von ihm abfragen kannst.

VECTOR temp;
vec_for_angle(temp, my.pan);//winkel des characters wird in einen Vector der Länge 1 konvertiert.
vec_normalize(temp, 50);//vektor wird um 50 verlängert
vec_add(temp, my.x);//die Position des Charakters wird zum Vektor dazu addiert, so dass wir jetzt die genaue Position 50 Einheiten vor dem Charakter haben
c_trace(...);//hier kommt die position des Charakters als Ausgangspunkt des Strahles und temp als Zielpunkt des Strahles rein
if(you)//falls nun ein Object dort ist
{
my.pan += 45;//...dann drehe den Charakter um 45 Grad, so dass er mit großer Wahrscheinlichkeit vorbeigeht

Das ist jetzt auf die Schnelle sehr grob hingeschrieben, kann man alles verfeinern - und - muss man nochmal auf die Syntax und mögliche Denkfehler überprüfen! wink Viel Spass!
}

Re: Objekteigenschaften [Re: Pappenheimer] #378409
07/23/11 14:24
07/23/11 14:24
Joined: Jul 2011
Posts: 5
N
natrox Offline OP
Newbie
natrox  Offline OP
Newbie
N

Joined: Jul 2011
Posts: 5
Hallo Pappenheimer,

danke für deine Antwort =). So in der Richtung habe ich es mir gedacht gehabt und mich auch dran versucht. Leider dreht der Avatar sich nicht weg. Er läuft entweder dagegen oder gleidet an dem Objekt vorbei.

Gruß
natrox

Re: Objekteigenschaften [Re: natrox] #378419
07/23/11 15:41
07/23/11 15:41
Joined: Feb 2011
Posts: 135
Myrkling Offline
Member
Myrkling  Offline
Member

Joined: Feb 2011
Posts: 135
Du kannst ja mal einen Ausschitt deines Codes posten, der nicht so funktioniert wie gedacht.

Bezieht sich deine Frage denn eher allgemein auf das Auslesen von Entity-Eigenschaften (Bounding-Box etc.) oder interessiert du dich speziell für das Ausweichen um Hindernisse?

Re: Objekteigenschaften [Re: natrox] #378422
07/23/11 15:52
07/23/11 15:52
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Zeig mal den Code, damit man sieht wie du die Drehung eingebaut hast, dann kann Dir eher einer weiterhelfen.

Last edited by Pappenheimer; 07/23/11 15:52. Reason: ^^ da war einer schneller!
Re: Objekteigenschaften [Re: Pappenheimer] #378428
07/23/11 16:14
07/23/11 16:14
Joined: Jul 2011
Posts: 5
N
natrox Offline OP
Newbie
natrox  Offline OP
Newbie
N

Joined: Jul 2011
Posts: 5
Hey,

wichtig ist State 5. Hier hat er sich auch teilweise gedreht.

Schon viel verwurstet =)

Code:

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

#define STATE     skill1
#define ANIMATION skill2

var target_x = 0;
var target_x2 = 0;
var target_y = 0;
var target_z = 0;
var start;
var camview = 0;

FONT* arial_font = "Arial#24b";

TEXT* name_txt =
{ 
	pos_x = 800; 
	pos_y = 50;
	font(arial_font);
	string(tex_name);
	flags = SHOW;
}

PANEL* distance_x =
{	      
	pos_x = 100;
	pos_y = 50;
   digits (0, 0, "Objekt X: %.0f", arial_font, 1, target_x);
	flags = SHOW;
}

PANEL* distance_x2 =
{	      
	pos_x = 100;
	pos_y = 80;
   digits (0, 0, "Target X2: %.0f", arial_font, 1, target_x2);
	flags = SHOW;
}


PANEL* distance_y =
{	      
	pos_x = 100;
	pos_y = 110;
   digits (0, 0, "Objekt Y: %.0f", arial_font, 1, target_y);
	flags = SHOW;
}

PANEL* distance_z =
{	      
	pos_x = 100;
	pos_y = 140;
   digits (0, 0, "Objekt Z: %.0f", arial_font, 1, target_z);
	flags = SHOW;
}


function main()
{	
	screen_size.x = 800;
   screen_size.y = 600;

	level_load("Gang_mitLicht_mitTisch.wmb");
 	camera.pan -= mouse_force.x;
 	start = camera.pan; // Start wert für X-Richtung
 
	while (1)
	{
		mouse_pos.x = mouse_cursor.x;
		mouse_pos.y = mouse_cursor.y;
		

		if(camera.pan > (start - 90) && camera.pan < (start + 90))
		{
			camera.pan -= mouse_force.x;
		}
		else if(camera.pan <= (start - 90))
			{
				if(mouse_force.x < 0)
					camera.pan -= mouse_force.x;
			}
		else if(camera.pan >= (start + 90))		
			{
				if(mouse_force.x > 0)
					camera.pan -= mouse_force.x;
			}

		
	
		if(camera.tilt > -90 && camera.tilt < 90)
		{
			camera.tilt += mouse_force.y;
		}
		else if(camera.tilt <= -90)
			{
				if(mouse_force.y > 0)
					camera.tilt += mouse_force.y;	
			}
		else if(camera.tilt >= 90)		
			{
				if(mouse_force.y < 0)
					camera.tilt += mouse_force.y;	
			}
		
		wait (1);
	} 	
}


function robot_hit()
{
	/* Die Funktion wird aufgerufen sobald der Roboter auf ein Objekt trifft.
	 * c_scan ermittelt Entities oder andere Objekte innerhalb eines Kegels oder einer Kugel.
	 * c_scan für WAND-Ermittlung verwenden!!!!!! hit teil verwenden für kollision
	 */
	 	draw_text("Ouch!! I'am ruleings...",10,10,vector(50,255,50));
	 	
	 	c_scan(my.x,my.pan,vector(360,0,750),SCAN_ENTS | SCAN_FLAG2 | IGNORE_ME);
	 	if(target)
	 	{
	 		
	 		target_x2 = target.x; 
	 		draw_text("Ouch!! I'am ruleings11111...",10,10,vector(50,255,50));
	 		draw_text("Ouch!! I'am ruleings22222...",10,10,vector(50,255,50));
		}
	 	
	my.STATE = 1;
}

function camera_follow(ENTITY* ent)
{
	while(1) 
	{
	
		vec_set(camera.x,vector(camview,0,150));  // -550 camera position relative to the player   
		vec_rotate(camera.x,ent.pan); // rotate the camera position with the player
		vec_add(camera.x,ent.x);      // add player position
		//vec_set(camera.pan,vector(ent.pan,-10,0)); // look in player direction, slighty down      
		wait(1);
	}
}

action robot_walk()
{ 
	camera_follow(me);
	VECTOR temp;
	VECTOR vFeet;
	vec_for_min(vFeet,me); // vFeet.z = distance from player origin to lowest vertex
	
	
	VECTOR content_right; // Sensor für rechten content
	VECTOR content_left; // Sensor für linken content
	
	set(my,FLAG2);  
	my.STATE = 1;

	while (1)
	{
		
		if (key_q) 
			{
				my.STATE = 1;
			}
			
			
		// state 1: laufen ////////////////////////////////////////////
		if (my.STATE == 1)
		{
			// rotate the entity with the arrow keys     
			my.pan += (key_cul-key_cur)*5*time_step;   

			// move the entity forward/backward with the arrow keys
			var distance = (key_cuu-key_cud)*5*time_step;
			c_move(me, vector(distance,0,0), NULL, GLIDE);

			// animate the entity    
			my.ANIMATION += 2*distance;
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);

			// adjust entity to the ground height, using a downwards trace
			c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
			my.z = hit.z - vFeet.z; // always place player's feet on the ground
			my.z = my.z + 1;
						
				
			if (key_space) 
			{ 
				// key pressed -> go to state 2
				my.STATE = 2;
			}
			
			if(key_p)
			{
				my.STATE = 3;
			}
			
			if(key_g)
			{
				my.STATE = 4;
			}
			
			if(key_t)
			{
				my.STATE = 5;
			}
			
			
			
		}
		 //state 2:  rennen/////////////////////////////////// 
		if (my.STATE == 2) 
		{
				
			var distance = (key_cuu-key_cud)*50*time_step;
			c_move(me, vector(distance,0,0), NULL, GLIDE);
			
			// animate the entity    
			my.ANIMATION += 8*distance;
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);

			// adjust entity to the ground height, using a downwards trace
			c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
			my.z = hit.z - vFeet.z; // always place player's feet on the ground
			my.z = my.z + 50;
			
			if (!key_space) my.STATE = 1;
		}  
		
		
		if (my.STATE == 3)
		{
			//VECTOR to;
			
			//vec_set(to,vector(camera.x, camera.y, camera.z));
			
			//  WICHTIG DAS ES HIER VOR DEM C_MOVE IST!!!!
			var distance =	c_trace(my.y,vector(my.x,my.y+1000,my.z),IGNORE_ME | SCAN_TEXTURE);
			
		
			//var distance =	c_trace(my.y,vector(my.x,my.y+1000,my.z),IGNORE_ME | IGNORE_PASSABLE);
			
			//var distance =	c_trace(my.x,vector(my.x+1000,my.y,my.z),IGNORE_ME | IGNORE_PASSABLE);
			//var distance =	c_trace(my.x,&to,IGNORE_ME | IGNORE_PASSABLE);
			//my.y = hit.y - vFeet.y; 
			
			c_setminmax(me);//Setzt die Kollisionsbox auf den Avatar
		
			//c_move(me, nullvector, vector(0, 15 * time_step, 0),IGNORE_ME | GLIDE);
			
			//Nachschauen warum es so verwendet werden muss!!
			c_move(me,vector(40*time_step,0,0),NULL,IGNORE_YOU);

						

			my.ANIMATION += 2*distance;
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);
			
					
				if (HIT_TARGET)
				{
						target_x = hit.x;
						target_y = hit.y;
						target_z = hit.z;
					
					my.event = robot_hit(); //Funktiondeklaration
					my.emask |= ENABLE_IMPACT; //Start des Event sobald eine Kollision statt findet 
					

						my.STATE = 1;
				}  
		}
		
		if(my.STATE == 4)
		{
			
				VECTOR obe;
				vec_set(obe,vector(16,300,-23));
				
				
			// the road is clear? then rotate the enemy towards the player
			if (c_content (content_left.x, 0) + c_content (content_left.x, 0) == 2) 
			{
				vec_set(obe, my.x); 
				vec_sub(obe, my.x); 
				vec_to_angle(my.pan, obe); // turn the enemy towards the player
				
				draw_text("Ouch!! I'am ruleings...",10,10,vector(50,255,50));
			}
			
			
		
				vec_set(content_right, vector(0, 50, -5));
				vec_rotate(content_right, my.pan);
				vec_add(content_right.x, my.x);
				if (c_content (content_right.x, 0) != 1) // this area isn't clear?
				{
					my.pan += 5 * time_step; // then rotate the enemy, allowing it to avoid the obstacle
					//my.pan += 45;
				}
				vec_set(content_left, vector(50, 5, -15));
				vec_rotate(content_left, my.pan);
				vec_add(content_left.x, my.x);
			/*
			if (c_content (content_left.x, 0) != 1) // this area isn't clear?
				{
					 my.pan -= 5 * time_step; // then rotate the enemy, allowing it to avoid the obstacle
					//my.pan -= 45;
				}
			*/
				c_move (my, vector(10 * time_step, 0, 0), nullvector, GLIDE);
				
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);
			
			
			if ((total_frames % 80) == 1) // fire a bullet each second
			{
				vec_for_vertex (temp, my, 8);
				// create the bullet at enemy's position and attach it the "move_enemy_bullets" function
			}
			
			
		
		}
		
			
		if(my.STATE == 5)
		{
			VECTOR temp;
			vec_set(temp.y, vector(0,50,0));
			//vec_normalize(temp,50);
			vec_rotate(temp,my.pan);
			vec_add(temp.y,my.y);
			if(c_trace(my.y,temp.y,IGNORE_ME + USE_BOX) > 0)
			{
				draw_text("bin hier =))!!!",10,10,vector(50,255,50));
				my.pan += 5;
			}
			c_move (my, vector(10 * time_step, 0, 0), nullvector,GLIDE);
		}
		wait(1);
		
		if(key_k)
		{
			if(camview==0)
			{
				camview=-550;
				camera_follow(me);
				
			}
			else
			{
				camview=0;
				camera_follow(me);
			}
			wait(3);
		}	
	}
}



Last edited by natrox; 07/23/11 16:38.
Re: Objekteigenschaften [Re: natrox] #378432
07/23/11 16:32
07/23/11 16:32
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Uh, benutz mal den Code Tag, ist beim Posten unter der # zu finden.

Re: Objekteigenschaften [Re: Pappenheimer] #378440
07/23/11 17:33
07/23/11 17:33
Joined: Jul 2011
Posts: 5
N
natrox Offline OP
Newbie
natrox  Offline OP
Newbie
N

Joined: Jul 2011
Posts: 5

Code:

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

#define STATE     skill1
#define ANIMATION skill2

var target_x = 0;
var target_x2 = 0;
var target_y = 0;
var target_z = 0;
var start;
var camview = 0;

FONT* arial_font = "Arial#24b";

TEXT* name_txt =
{ 
	pos_x = 800; 
	pos_y = 50;
	font(arial_font);
	string(tex_name);
	flags = SHOW;
}

PANEL* distance_x =
{	      
	pos_x = 100;
	pos_y = 50;
   digits (0, 0, "Objekt X: %.0f", arial_font, 1, target_x);
	flags = SHOW;
}

PANEL* distance_x2 =
{	      
	pos_x = 100;
	pos_y = 80;
   digits (0, 0, "Target X2: %.0f", arial_font, 1, target_x2);
	flags = SHOW;
}


PANEL* distance_y =
{	      
	pos_x = 100;
	pos_y = 110;
   digits (0, 0, "Objekt Y: %.0f", arial_font, 1, target_y);
	flags = SHOW;
}

PANEL* distance_z =
{	      
	pos_x = 100;
	pos_y = 140;
   digits (0, 0, "Objekt Z: %.0f", arial_font, 1, target_z);
	flags = SHOW;
}


function main()
{	
	screen_size.x = 800;
   screen_size.y = 600;

	level_load("Gang_mitLicht_mitTisch.wmb");
 	camera.pan -= mouse_force.x;
 	start = camera.pan; // Start wert für X-Richtung
 
	while (1)
	{
		mouse_pos.x = mouse_cursor.x;
		mouse_pos.y = mouse_cursor.y;
		

		if(camera.pan > (start - 90) && camera.pan < (start + 90))
		{
			camera.pan -= mouse_force.x;
		}
		else if(camera.pan <= (start - 90))
			{
				if(mouse_force.x < 0)
					camera.pan -= mouse_force.x;
			}
		else if(camera.pan >= (start + 90))		
			{
				if(mouse_force.x > 0)
					camera.pan -= mouse_force.x;
			}

		
	
		if(camera.tilt > -90 && camera.tilt < 90)
		{
			camera.tilt += mouse_force.y;
		}
		else if(camera.tilt <= -90)
			{
				if(mouse_force.y > 0)
					camera.tilt += mouse_force.y;	
			}
		else if(camera.tilt >= 90)		
			{
				if(mouse_force.y < 0)
					camera.tilt += mouse_force.y;	
			}
		
		wait (1);
	} 	
}


function robot_hit()
{
	/* Die Funktion wird aufgerufen sobald der Roboter auf ein Objekt trifft.
	 * c_scan ermittelt Entities oder andere Objekte innerhalb eines Kegels oder einer Kugel.
	 * c_scan für WAND-Ermittlung verwenden!!!!!! hit teil verwenden für kollision
	 */
	 	draw_text("Ouch!! I'am ruleings...",10,10,vector(50,255,50));
	 	
	 	c_scan(my.x,my.pan,vector(360,0,750),SCAN_ENTS | SCAN_FLAG2 | IGNORE_ME);
	 	if(target)
	 	{
	 		
	 		target_x2 = target.x; 
	 		draw_text("Ouch!! I'am ruleings11111...",10,10,vector(50,255,50));
	 		draw_text("Ouch!! I'am ruleings22222...",10,10,vector(50,255,50));
		}
	 	
	my.STATE = 1;
}

function camera_follow(ENTITY* ent)
{
	while(1) 
	{
	
		vec_set(camera.x,vector(camview,0,150));  // -550 camera position relative to the player   
		vec_rotate(camera.x,ent.pan); // rotate the camera position with the player
		vec_add(camera.x,ent.x);      // add player position
		//vec_set(camera.pan,vector(ent.pan,-10,0)); // look in player direction, slighty down      
		wait(1);
	}
}

action robot_walk()
{ 
	camera_follow(me);
	VECTOR temp;
	VECTOR vFeet;
	vec_for_min(vFeet,me); // vFeet.z = distance from player origin to lowest vertex
	
	
	VECTOR content_right; // Sensor für rechten content
	VECTOR content_left; // Sensor für linken content
	
	set(my,FLAG2);  
	my.STATE = 1;

	while (1)
	{
		
		if (key_q) 
			{
				my.STATE = 1;
			}
			
			
		// state 1: laufen ////////////////////////////////////////////
		if (my.STATE == 1)
		{
			// rotate the entity with the arrow keys     
			my.pan += (key_cul-key_cur)*5*time_step;   

			// move the entity forward/backward with the arrow keys
			var distance = (key_cuu-key_cud)*5*time_step;
			c_move(me, vector(distance,0,0), NULL, GLIDE);

			// animate the entity    
			my.ANIMATION += 2*distance;
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);

			// adjust entity to the ground height, using a downwards trace
			c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
			my.z = hit.z - vFeet.z; // always place player's feet on the ground
			my.z = my.z + 1;
						
				
			if (key_space) 
			{ 
				// key pressed -> go to state 2
				my.STATE = 2;
			}
			
			if(key_p)
			{
				my.STATE = 3;
			}
			
			if(key_g)
			{
				my.STATE = 4;
			}
			
			if(key_t)
			{
				my.STATE = 5;
			}
			
			
			
		}
		 //state 2:  rennen/////////////////////////////////// 
		if (my.STATE == 2) 
		{
				
			var distance = (key_cuu-key_cud)*50*time_step;
			c_move(me, vector(distance,0,0), NULL, GLIDE);
			
			// animate the entity    
			my.ANIMATION += 8*distance;
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);

			// adjust entity to the ground height, using a downwards trace
			c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
			my.z = hit.z - vFeet.z; // always place player's feet on the ground
			my.z = my.z + 50;
			
			if (!key_space) my.STATE = 1;
		}  
		
		
		if (my.STATE == 3)
		{
			//VECTOR to;
			
			//vec_set(to,vector(camera.x, camera.y, camera.z));
			
			//  WICHTIG DAS ES HIER VOR DEM C_MOVE IST!!!!
			var distance =	c_trace(my.y,vector(my.x,my.y+1000,my.z),IGNORE_ME | SCAN_TEXTURE);
			
		
			//var distance =	c_trace(my.y,vector(my.x,my.y+1000,my.z),IGNORE_ME | IGNORE_PASSABLE);
			
			//var distance =	c_trace(my.x,vector(my.x+1000,my.y,my.z),IGNORE_ME | IGNORE_PASSABLE);
			//var distance =	c_trace(my.x,&to,IGNORE_ME | IGNORE_PASSABLE);
			//my.y = hit.y - vFeet.y; 
			
			c_setminmax(me);//Setzt die Kollisionsbox auf den Avatar
		
			//c_move(me, nullvector, vector(0, 15 * time_step, 0),IGNORE_ME | GLIDE);
			
			//Nachschauen warum es so verwendet werden muss!!
			c_move(me,vector(40*time_step,0,0),NULL,IGNORE_YOU);

						

			my.ANIMATION += 2*distance;
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);
			
					
				if (HIT_TARGET)
				{
						target_x = hit.x;
						target_y = hit.y;
						target_z = hit.z;
					
					my.event = robot_hit(); //Funktiondeklaration
					my.emask |= ENABLE_IMPACT; //Start des Event sobald eine Kollision statt findet 
					

						my.STATE = 1;
				}  
		}
		
		if(my.STATE == 4)
		{
			
				VECTOR obe;
				vec_set(obe,vector(16,300,-23));
				
				
			// the road is clear? then rotate the enemy towards the player
			if (c_content (content_left.x, 0) + c_content (content_left.x, 0) == 2) 
			{
				vec_set(obe, my.x); 
				vec_sub(obe, my.x); 
				vec_to_angle(my.pan, obe); // turn the enemy towards the player
				
				draw_text("Ouch!! I'am ruleings...",10,10,vector(50,255,50));
			}
			
			
		
				vec_set(content_right, vector(0, 50, -5));
				vec_rotate(content_right, my.pan);
				vec_add(content_right.x, my.x);
				if (c_content (content_right.x, 0) != 1) // this area isn't clear?
				{
					my.pan += 5 * time_step; // then rotate the enemy, allowing it to avoid the obstacle
					//my.pan += 45;
				}
				vec_set(content_left, vector(50, 5, -15));
				vec_rotate(content_left, my.pan);
				vec_add(content_left.x, my.x);
			/*
			if (c_content (content_left.x, 0) != 1) // this area isn't clear?
				{
					 my.pan -= 5 * time_step; // then rotate the enemy, allowing it to avoid the obstacle
					//my.pan -= 45;
				}
			*/
				c_move (my, vector(10 * time_step, 0, 0), nullvector, GLIDE);
				
			ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);
			
			
			if ((total_frames % 80) == 1) // fire a bullet each second
			{
				vec_for_vertex (temp, my, 8);
				// create the bullet at enemy's position and attach it the "move_enemy_bullets" function
			}
			
			
		
		}
		
			
		if(my.STATE == 5)
		{
			VECTOR temp;
			vec_set(temp.y, vector(0,50,0));
			//vec_normalize(temp,50);
			vec_rotate(temp,my.pan);
			vec_add(temp.y,my.y);
			if(c_trace(my.y,temp.y,IGNORE_ME + USE_BOX) > 0)
			{
				draw_text("bin hier =))!!!",10,10,vector(50,255,50));
				my.pan += 5;
			}
			c_move (my, vector(10 * time_step, 0, 0), nullvector,GLIDE);
		}
		wait(1);
		
		if(key_k)
		{
			if(camview==0)
			{
				camview=-550;
				camera_follow(me);
				
			}
			else
			{
				camview=0;
				camera_follow(me);
			}
			wait(3);
		}	
	}
}



Re: Objekteigenschaften [Re: natrox] #378475
07/23/11 23:35
07/23/11 23:35
Joined: Feb 2011
Posts: 135
Myrkling Offline
Member
Myrkling  Offline
Member

Joined: Feb 2011
Posts: 135
In deinem Code steht: (geringfügig verkürzt)
Code:
if(my.STATE == 5) {
    VECTOR temp;
    vec_set(temp.y, vector(0,50,0));
    vec_rotate(temp,my.pan);
    vec_add(temp.y,my.y);
    if(c_trace(my.y,temp.y,IGNORE_ME + USE_BOX) > 0)



Ersetze hier alle temp.y mit temp und alle my.y mit my.x.
Wenn du in die Blickrichtung der Entity tracen willst, müsste der Vektor auf 50,0,0 gesetzt werden.

Re: Objekteigenschaften [Re: Myrkling] #378489
07/24/11 08:33
07/24/11 08:33
Joined: Jul 2011
Posts: 5
N
natrox Offline OP
Newbie
natrox  Offline OP
Newbie
N

Joined: Jul 2011
Posts: 5
Hey, gut vielen dank =) jetzt nun noch eine frage, wie bekomme ich die objekteigenschaften von dem objekt raus, mit dem er kollidiert? hast du da ein beispiel für mich? Es soll ja mit dem you - pointer funktionieren.

Gruß
natrox

Page 1 of 2 1 2

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1