Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.07.2015, 18:48
MarkEvans вне форума Посмотреть профиль Отправить личное сообщение для MarkEvans Найти все сообщения от MarkEvans
  № 1  
Ответить с цитированием
MarkEvans

Регистрация: Jul 2015
Адрес: СПБ
Сообщений: 14
Question Следование за мышкой

Здравствуйте, Flasher'ы!
Недавно узнал о проекте под названием Agar.io (http://agar.io/) и решил слепить что-то подобное...
Но очень скоро по своей неопытности натолкнулся на интересную проблему - следование ГГ за мышкой.
В AS 2.0 это вылядело примерно так:
Код AS1/AS2:
speed = 5;
this.onEnterFrame = function() {
	dx = this._xmouse-pl._x;
	dy = this._ymouse-pl._y;
	Q = Math.atan2(dy, dx);
	pl._rotation = Q*180/Math.PI;
	dist = Math.sqrt(dx*dx+dy+dy);
	if (dist>speed) {
		valx = Math.cos(Q)*speed;
		// постоянная скорость
		valy = Math.sin(Q)*speed;
		pl._x += valx;
		pl._y += valy;
			}
};
Сколько я не бился, так и не смог этот код портировать в AS 3.0...
И ещё - незнаю как сделать спавн еды для ГГ по всему полю
Всё чего я добился:
Код AS3:
import flash.display.MovieClip;
 
var myPl2: MovieClip = new pl2 ();
 addChild(myPl2);
 myPl2.x >= 550;
 myPl2.y >= 400;
Прошу не ругаться сильно - я начинающий и на форуме это мой первый вопрос

Старый 01.07.2015, 23:41
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сколько я не бился, так и не смог этот код портировать в AS 3.0...
А вы покажите то, что у вас не получилось и мы попробуем подсказать, что не так. А то если напишем код за вас, то вы не получите +1 к своему опыту, для прокачки as3 навыка.

Цитата:
И ещё - незнаю как сделать спавн еды для ГГ по всему полю
Здесь явно нужно идти в сторону случайности, то-есть Math.random()

Старый 02.07.2015, 00:00
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Лучше псевдорандом )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 02.07.2015, 19:29
MarkEvans вне форума Посмотреть профиль Отправить личное сообщение для MarkEvans Найти все сообщения от MarkEvans
  № 4  
Ответить с цитированием
MarkEvans

Регистрация: Jul 2015
Адрес: СПБ
Сообщений: 14
Вот, как и просили - и AS 2, и в AS 3...
Жду ответов))
Вложения
Тип файла: rar AgarIO.rar (86.3 Кб, 26 просмотров)

Старый 02.07.2015, 20:05
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 5  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
В agar.io не везде генерится еда, а кусками. Поэтому выбираем случайную точку на карте, и генерим относительно неё раз 100 в пределах 500-700 пикселей от точки во все стороны. И так несколько итераций.
__________________
There is no thing in this world that is not simple.

Старый 02.07.2015, 22:35
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от MarkEvans Посмотреть сообщение
Вот, как и просили - и AS 2, и в AS 3...
Жду ответов))
Исходники открыть не удалось, видимо ваша версия Flash выше моей. Но совсем не обязательно выкладывать исходники, ведь можно просто показать код, который нуждается в помощи.

Старый 02.07.2015, 22:40
MarkEvans вне форума Посмотреть профиль Отправить личное сообщение для MarkEvans Найти все сообщения от MarkEvans
  № 7  
Ответить с цитированием
MarkEvans

Регистрация: Jul 2015
Адрес: СПБ
Сообщений: 14
Т.е. мы берём, допустим 4 точки на карте и относительно них прибаляем координаты и там спавним еду?
А, и ещё вопросик - как мне сделать подсчёт очков при съедании? Самая очевидная мысль, наверное - это создать переменную и с помощью if'а прибавлять по одному очку... Но вот как вывести это на экран?
Заранее спасибо за ответы.

Добавлено через 10 минут
Ок, выкладываю весь код:
Версия AS3:

Код AS3:
stop();
 
import flash.display.MovieClip;
 
//▼ Это неудачная попытка реализовать тот самый спавн еды... ▼
 
//stage.addEventListener(Event.ENTER_FRAME, apelsin);
//function apelsin (e:Event) {
//	var myPl2: MovieClip = new pl2 ();
// addChild(myPl2);
//  myPl2.x = Math.random();
//  myPl2.y = Math.random();
//}
 
// ▼ Единственное, что я придумал для следования ГГ за курсором ▼
 
stage.addEventListener(Event.ENTER_FRAME, apelsin);
  function apelsin (e:Event) {
	Mouse.hide();
	pl.x = mouseX;
	pl.y = mouseY;
}
 
//P.S
//Да, код ужасен, но я новичёк в этом деле, и да - мне 14 лет))
//Так что я себя частично оправдываю...
И версия AS2:

Код AS1/AS2:
speed = 5;
Mouse.hide();//Прячем мышь
this.onEnterFrame = function() {
	dx = this._xmouse-pl._x;
	dy = this._ymouse-pl._y;
	Q = Math.atan2(dy, dx);
	pl._rotation = Q*180/Math.PI;
	dist = Math.sqrt(dx*dx+dy+dy);
	if (dist>speed) {
		valx = Math.cos(Q)*speed;
		// постоянная скорость
		valy = Math.sin(Q)*speed;
		pl._x += valx;
		pl._y += valy;
	}
};
 
// ▼ А это две глупых попытки спрятать "еду" ▼
 
/*if (pl._x = eda._x) {
	eda.visible = false;
}
if (pl._y = eda._y) {
	eda.visible = false;
}*/
 
 
if (pl.hitTestPoint(eda._x, eda._y)) {
	eda.visible = false;
}

Старый 02.07.2015, 23:28
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Код AS3:
Mouse.hide();
 
var speed:float = 0.5; //скорость 0 - не двигается,  1-мгновенно перемещается
 
addEventListener(Event.ENTER_FRAME, apelsin);
 
function apelsin(e:Event)
{
	//Mouse.hide(); нет смысла каждый кадр скрывать мышь 
 
	//pl.x = mouseX;
	//pl.y = mouseY;
 
	//можно и так, для плавного результата
	pl.x += (mouseX - pl.x) * speed;
	pl.y += (mouseY - pl.y) * speed;
}

Старый 02.07.2015, 23:42
MarkEvans вне форума Посмотреть профиль Отправить личное сообщение для MarkEvans Найти все сообщения от MarkEvans
  № 9  
Ответить с цитированием
MarkEvans

Регистрация: Jul 2015
Адрес: СПБ
Сообщений: 14
Спасибо большое, пойду пробовать, только вот не понял, что делает
Цитата:
var speed:float = 0.5;

Старый 03.07.2015, 00:04
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 10  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от MarkEvans Посмотреть сообщение
Спасибо большое, пойду пробовать, только вот не понял, что делает
Ох... перепутал с другим языком. Нужно вместо float прописать Number.

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.