GMC Bulgaria

Здравейте ( Вход | Регистрация )

 
Reply to this topicStart new topic
създаване и унищожаване на обект след изминаване на определено разстояние
svetljjjo
коментар 12:14:46, 29-July-2012, Sunday
Коментар #1


Редовен потребител
***

Група: Потребител
Коментари: 106
Регистриран: 04.02.06
Потребител № 97



Здравейте

Имам игра в която обекта на играча стреля . Обекта се движи в 8 посоки и изстреляния куршум трябва да може да излита в текущата посока на движение и да се унищожава след изминаване на определено разстояние примерно 200 пиксела. Не когато напусне стаята или изгледа а точно определено разстояние да кажем 200 пиксела или пък х+нещо и y+нещо.
Аз правя път като му добавям две точки началната е с кординати х и y на току що създадената инстанция и крайната
х+нещо и y+нещо и пускам коршума да се движи по пътя и да се унищожи като свърши пътя .
Но това не ми се струва много умно и рационално някой има ли по добра идея ?!?
ето моя примерен код

Код
pathshot=path_add();
depth=1;
path_set_closed(pathshot,false);
path_add_point(pathshot,x,y,5);
//определя посоката на стрелящия да лети куршума в същата посока
var dx,dy;
switch (object_player.direction)
{
  case 0:   dx = x+200;  dy = y;      break;
  case 45:  dx = x+100;  dy = y-100;  break;
  case 90:  dx = x;      dy = y-200;  break;  
  case 135: dx = x-100;  dy = y-100;  break;
  case 180: dx = x-200;  dy = y;      break;
  case 225: dx = x-100;  dy = y+100;  break;
  case 270: dx = x;      dy = y+200;  break;
  case 315: dx = x+100;  dy = y+100;  break;
}


path_add_point(pathshot,dx,dy,5);
path_start(pathshot,100,0,false);


--------------------
Go to the top of the page
 
+Quote Post
яверт
коментар 12:41:45, 29-July-2012, Sunday
Коментар #2


Засмян тъпоъгълник :D
Икона на група

Група: Администратор
Коментари: 1790
Регистриран: 21.07.08
Град: Това е място, населено с много хора. FPS: 60
Потребител № 1116



//step event
if point_distance(xstart, ystart, x, y)>200 instance_destroy();


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
svetljjjo
коментар 13:35:37, 29-July-2012, Sunday
Коментар #3


Редовен потребител
***

Група: Потребител
Коментари: 106
Регистриран: 04.02.06
Потребител № 97



Цитат(яверт @ 13:41:45, 29-July-2012, Sunday) *
//step event
if point_distance(xstart, ystart, x, y)>200 instance_destroy();


това е умно
да се еба и аз в програмиста как ми идват първо най сложните неща като идей biggrin.gif

Обаче имам още едно питане аз сега направих така
Create Event
Код
direction=object_player.direction;
speed=9;
depth=1;


Step Event
Код
if point_distance(object_player.x, object_player.y, x, y)>200 instance_destroy();


А в обекта object_player
Key Press Event for Key
Код
if (instance_number(bulet)<3) {
shot=instance_create(object_player.x,object_player.y,bulet);
}


Ако играчите обаче станат двама или повече как да разбера кой играч създава обекта че да задам direction=object_player.direction;


--------------------
Go to the top of the page
 
+Quote Post
psycho666
коментар 15:50:33, 29-July-2012, Sunday
Коментар #4


Новодошъл
*

Група: Потребител
Коментари: 22
Регистриран: 29.12.11
Град: Враца
Потребител № 1702



Тва е лесно... Направи два обекта... bullet1 и bullet2. Първия играч ще изстрелва bullet1, а втория bullet2. Така винаги ще знаеш кой играч е създал куршума, ако ще и 100 играча да има. Тогава ще трябва да имаш 100 булета...
Има и друг начин. В булет обекта създай променлива, примерно player...
Когато играча изстреля куршума веднага задава shot.player=1, ако това е първия играч, 2 ако е втория, 1436 ако 1436-тия играч е изстрелял тоя куршум...


--------------------
Monstrocity (beta) Поиграйте, коментирайте, 80% от функционалността е готова. Останалото ще се появи на по-късне етап. Съобщавайте за бъгове за да ги отстранявам. :)
Go to the top of the page
 
+Quote Post
svetljjjo
коментар 17:31:08, 29-July-2012, Sunday
Коментар #5


Редовен потребител
***

Група: Потребител
Коментари: 106
Регистриран: 04.02.06
Потребител № 97



Цитат(psycho666 @ 16:50:33, 29-July-2012, Sunday) *
Тва е лесно... Направи два обекта... bullet1 и bullet2. Първия играч ще изстрелва bullet1, а втория bullet2. Така винаги ще знаеш кой играч е създал куршума, ако ще и 100 играча да има. Тогава ще трябва да имаш 100 булета...
Има и друг начин. В булет обекта създай променлива, примерно player...
Когато играча изстреля куршума веднага задава shot.player=1, ако това е първия играч, 2 ако е втория, 1436 ако 1436-тия играч е изстрелял тоя куршум...



да така ще трябва да стане по втория начин понеже ми се ще обектите да са възможно най малко
просто ще се създават инстанции на тях

А още един въпрос нали инстанцията има номер (>= 100000). какво ще стане когато това число стане 999999
ще стане ли следващата инстанция 10 милиона или това число е фиксирано по битове и няма да може да се създаде следваща инстанция
защото въпреки че инстанциите се унищожават всяка следваща създадена получава +1 номер


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 потребител(и) четат тази тема (1 гости и 0 скрити)
0 Потребител(и):

 



Олекотена версия Час: 01:53:19, 19.05.24