Laserweapon

Posted By: Mageron

Laserweapon - 09/06/08 12:41

In Deutsch:
Hi,
wie kann ich eine Partikel-Funktion für eine Laserkanone erstellen? Der Schuß soll sich zur Maus bewegen.

In English:
Hi,
how can i make a particel-function for a shot of a lasercannon?
The shot shot move to the mouse.

mfG
Mageron
Posted By: Rasch

Re: Laserweapon - 09/06/08 12:57

Hi!

Check this thread

> Click here <
Posted By: Mageron

Re: Laserweapon - 09/06/08 16:33

Thanks a lot, this is that I looked for!
Posted By: Mageron

Re: Laserweapon - 09/18/08 12:13

ok, dass war alles irgendie nicht so. Also hab ich angefangen, es selbst zu probieren. Das Geschoss sollen zum Fadenkreuz fliegen, fällt aber zu Boden. Wieso?
Hier der code:
Code:
VAR sicht_dist[3] = -100,0,15;
VAR sicht_ang[3];
VAR Wackel;

VIEW Sicht
{
 layer = 1;
 pos_x = 0;
 pos_y = 0;
 size_x = 800;
 size_y = 600;
 offset_x = 0;
 offset_y = 0;
 arc = 45;
 aspect = 1;
 flags = visible;
}

ACTION Plasmageschoss
{
 
 my.red = 155;
 my.blue = 255;
 my.green = 155;
 my.push = -1;
 
 Ziel.x = 1500 + mouse_pos.x;
 Ziel.y = 1500 + mouse_pos.y;
 Ziel.z = 0;
 vec_for_screen(Ziel.x,Sicht);
 vec_sub(Ziel.x,my.x);
 vec_to_angle(my.pan,Ziel.x);
 WHILE(1)
 {
 
   
  Plasmageschoss_v.x = -20 * time;
 

  move_mode = ignore_passable + ignore_passents +  ignore_sprites;
  ent_move(Plasmageschoss_v.x,nullvector);
  
  my.enable_block = on;
  my.enable_entity = on;
  my.event = Event_Geschoss;
  effect(effect_explo3,100,my.x,nullvector);
  WAIT(1);
  
 }
}
 

Posted By: Mageron

Re: Laserweapon - 09/24/08 17:32

ok, dass war alles irgendie nicht so. Also hab ich angefangen, es selbst zu probieren. Das Geschoss sollen zum Fadenkreuz fliegen, fällt aber zu Boden. Wieso?
Hier der code:
Code:
VAR sicht_dist[3] = -100,0,15;
VAR sicht_ang[3];
VAR Wackel;

VIEW Sicht
{
 layer = 1;
 pos_x = 0;
 pos_y = 0;
 size_x = 800;
 size_y = 600;
 offset_x = 0;
 offset_y = 0;
 arc = 45;
 aspect = 1;
 flags = visible;
}

ACTION Plasmageschoss
{
 
 my.red = 155;
 my.blue = 255;
 my.green = 155;
 my.push = -1;
 
 Ziel.x = 1500 + mouse_pos.x;
 Ziel.y = 1500 + mouse_pos.y;
 Ziel.z = 0;
 vec_for_screen(Ziel.x,Sicht);
 vec_sub(Ziel.x,my.x);
 vec_to_angle(my.pan,Ziel.x);
 WHILE(1)
 {
 
   
  Plasmageschoss_v.x = -20 * time;
 

  move_mode = ignore_passable + ignore_passents +  ignore_sprites;
  ent_move(Plasmageschoss_v.x,nullvector);
  
  my.enable_block = on;
  my.enable_entity = on;
  my.event = Event_Geschoss;
  effect(effect_explo3,100,my.x,nullvector);
  WAIT(1);
  
 }
}
 

Posted By: Mageron

Re: Laserweapon - 01/25/09 20:07

Ja, ich mal wieder. Bin mittlerweile viel weiter, die Geschosse bereiten mir aber immernoch Kummer:
Code:
FUNCTION Waffe()
{
	Bolter = me;
	 
	WHILE(1)
	{
		bone_angle.pan = (screen_size.x / 2 - mouse_pos.x ) / 10;
		bone_angle.tilt = (screen_size.y / 2 - mouse_pos.y) / 10;
		ent_bonereset(my,"Bone1");
		ent_bonerotate(my,"Bone1",bone_angle);
		my.pan = player.pan; my.tilt = player.tilt; my.x = player.x; my.y = player.y;my.z = player.z + 130;
		my.visible = on;
		my.passable = on;
	
		
		WAIT(1);
	}
}

ACTION Bolt
{
   
   my.pan = (screen_size.x - mouse_pos.x ) / 10;
   my.tilt =(screen_size.y / 2 - mouse_pos.y) / 10;
	my.push = 1;
	Geschoss = me;
	WHILE(1)
	{  
	   Bewegung.x = 15 * time_step; Bewegung.y = 0;
	   my.scale_x = 0.1; my.scale_y = 0.1; my.scale_z = 0.1;
		c_move(me,Bewegung,nullvector,ignore_passable | IGNORE_MODELS);
		WAIT(1);
	}
}


FUNCTION schiessen()
{
	WHILE(key_pressed(280) == on)
	{
		Abschuss.x = Bolter.x; Abschuss.y = Bolter.y; Abschuss.z = Bolter.z;
	
   mouse3D.x = mouse_pos.x;
   mouse3D.y = 0;
   mouse3D.z = 15000 + mouse_pos.y;
   vec_for_screen(mouse3D,Sicht);
   c_trace(player.x,mouse3D.x,IGNORE_ME | IGNORE_PASSABLE | ACTIVATE_SHOOT | use_box);	
   ent_create("rocket.mdl",Abschuss.x,Bolt);
   WAIT(1);
	}
	IF(key_pressed(57) == on)
	{
	
   mouse3D.x = mouse_pos.x;
   mouse3D.y = 0;
   mouse3D.z = 15000 + mouse_pos.y;
   vec_for_screen(mouse3D,Sicht);
   c_trace(player.x,mouse3D.x,IGNORE_ME | ACTIVATE_SONAR | use_box);	
   WAIT(1);
	}
}


Die Geschosse fliegen wild herum, sollen aber von der Mündung zum FAdenkreuz fliegen.

Danke für die Hilfe
Posted By: Mageron

Re: Laserweapon - 04/10/09 14:49

So, neuer Versuch:
Habe folgende Schussfunktion:
Code:
IF(mouse_left == 1)
   {
   	
   	VAR temp[3];
      temp.x = mouse_pos.x; 
      temp.y = mouse_pos.y;
      temp.z = 100000;
	   vec_for_screen(temp,Sicht);
    	c_trace(my.x,temp,ignore_me | ignore_you | USE_POLYGON | Activate_Shoot | Get_Hitvertex);
   	ent_create("Schussloch.tga",target,Schussloch);
      snd_play(Bolter_schuss,50,0);
      effect(funkenspezial,300,target,nullvector);
   	WAIT(1);
   }


Die Partikel entstehen aber im Punkt 0,0,0? Warum das?


I'll start a new try.
I have following code(s.u.)
The particles starts at 0,0,0. Why?
Posted By: Xarthor

Re: Laserweapon - 04/10/09 14:59

The last component of the effect instruction is the vel vector, which is the initial direction of the particles.
I don't know your particle function "funkenspezial" but if they have the move flag etc. they might just move to the nullvector which is (0,0,0). Not sure though.
What you can do: set temp to the difference between the target and the temp vektor and use it as vel vector.
Code:
IF(mouse_left == 1)
{
	VAR temp[3];
   temp.x = mouse_pos.x; 
   temp.y = mouse_pos.y;
   temp.z = 100000;
	vec_for_screen(temp,Sicht);
   c_trace(my.x,temp,ignore_me | ignore_you | USE_POLYGON | Activate_Shoot | Get_Hitvertex);
   
   ent_create("Schussloch.tga",target,Schussloch);
   snd_play(Bolter_schuss,50,0);
   
   vec_diff(temp.x,target.x,temp.x);
   effect(funkenspezial,300,target,temp);
   WAIT(1);
}

not tested!
Posted By: Mageron

Re: Laserweapon - 04/11/09 09:22

So, der Tipp hat leider nicht funktioniert. frown

Habe nun selbst eine Lösung gefunden:
Code:
mouse3D.x = mouse_pos.x;
   mouse3D.y = mouse_pos.y;
   mouse3D.z = 100000;
   vec_for_screen(mouse3D,Sicht);
	vec_for_vertex(Muendung,my,2869);
c_trace(Muendung,mouse3D,ignore_me | ignore_you | USE_POLYGON | Activate_Shoot | Get_Hitvertex);
    	vec_diff(Ziel,Ziel,target);
    	
    	
   	ent_create("Schussloch.tga",target,Schussloch);
      snd_play(Bolter_schuss,50,0);
      effect(funkenspezial,300,target,nullvector);


Leider ist eine große Distanz zwischen dem Fadenkreuz (Panel an der Mausposition) und dem Partikelursprung. Also will ich es jetzt ohne Fadenkreuz, aber mit Laserpointer machen. Wie mach ich es aber, dass der Laserpointer mit mir mitgeht und auf die Position zeigt?

Bisher klappt das:
Code:
CTION Laserpointer
{
	vec_for_vertex(Muendung,Mensch,2869);
	WHILE(1)
	{
		vec_sub(Ziel,mouse3D);
		vec_diff(distanz,Ziel,mouse3D);
		my.passable = on;
		my.transparent = on;
		my.alpha = 10;
		vec_to_angle(my.pan,mouse3D);
		my.scale_x = distanz;
		my.scale_y = 0.1;
		my.scale_z = 0.1;
		vec_set(my.x,Mensch.x);
		WAIT(1);
	}
}

Aber derStrahl geht durch den Kopf des Players und durch ihn durch.
© 2024 lite-C Forums