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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.06.2006, 23:09
ToXICus вне форума Посмотреть профиль Отправить личное сообщение для ToXICus Посетить домашнюю страницу ToXICus Найти все сообщения от ToXICus
  № 1  
Ответить с цитированием
ToXICus
 
Аватар для ToXICus

Регистрация: May 2006
Адрес: налево от Лондона
Сообщений: 447
Отправить сообщение для ToXICus с помощью ICQ
Cool Интерактивность

Помогите кто чем может:
Есть машинка и надо, чтобы она двигалась в определенных пределах, а то она у меня очень плохо перемещеться.
Также, как ей задать ускорение, плавное торможение и расход бензина (хотя бы простая полоска). Понмимаю что отчасти задействована физика, но не понмаю, поскольку что-то начинает постоянно глючить .
Если кто-то знает по теме шаровую литературу, подскажите.
P.S. вдруг чего, простите за оффтоп

Старый 18.06.2006, 00:31
Nidl вне форума Посмотреть профиль Отправить личное сообщение для Nidl Найти все сообщения от Nidl
  № 2  
Ответить с цитированием
Nidl

Регистрация: Mar 2006
Сообщений: 353
Код:
onClipEvent (load) {
	thrust = 2;
	maxSpeed = 4;
}
onClipEvent (enterFrame) {
	if (Key.isDown(Key.RIGHT)) {
		this._rotation += 3;
			}
	if (Key.isDown(Key.LEFT)) {
		this._rotation -= 3;
		}
	if (Key.isDown(Key.UP)) {
		xSpeed += thrust*Math.sin(_rotation*(Math.PI/180));
		ySpeed += thrust*Math.cos(_rotation*(Math.PI/180));
	
	} else {
		xSpeed *= decay;
		ySpeed *= decay;		
	}
	if (Key.isDown(Key.DOWN)) {
		xSpeed -= thrust*Math.sin(_rotation*(Math.PI/180));
		ySpeed -= thrust*Math.cos(_rotation*(Math.PI/180));
	
	}
	speed = Math.sqrt((xSpeed*xSpeed)+(ySpeed*ySpeed));
	if (speed>maxSpeed) {
		xSpeed *= maxSpeed/speed;
		ySpeed *= maxSpeed/speed;
	}
	_y -= ySpeed;
	_x += xSpeed;
	
}
или если с физикой то вот еще пример :

Код:
onClipEvent (load) {
	this.dam = 0;
	this.br = 0.06;
	var MAXspeed = 5;
	var frontMAXspeed = -1;
	this.a = 0.01;
	this.b = 0.02;
	var aksel_koeff = a+b;
	var BreakPathKoeff = 0.005;
	var Akseleration = 0;
	this.nosz._alpha = 0;
	this._rotation = 90;
	this.fuel = 80;
	this.x0 = 100;
	this.nos = 0;
	this.ch = 0;
}
onClipEvent (enterFrame) {
	if (this.Akseleration>0) {
		if (Key.isDown(Key.RIGHT)) {
			if (this.lw._rotation<35) {
				this.lw._rotation++;
				this.rw._rotation++;
			}
			if (Akseleration>0) {
				this._rotation += afront;
			} else if (Akseleration<0) {
				this.arear = math.atan((Akseleration-1)*-Akseleration*2.4);
				this._rotation += arear;
			}
		} else if (Key.isDown(Key.LEFT)) {
			if (this.lw._rotation>-35) {
				this.lw._rotation--;
				this.rw._rotation--;
			}
			if (Akseleration>0) {
				this._rotation -= afront;
			} else if (Akseleration<0) {
				this.arear = math.atan((Akseleration-1)*-Akseleration*2.4);
				this._rotation -= arear;
			}
		} else if (!Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT)) {
			this.lw._rotation = 0;
			this.rw._rotation = 0;
		}
		var brake_koeff = br;
	} else if (Akseleration<0) {
		var brake_koeff = -br*2;
	}
	this._x = this.vx+this.x0;
	this._y = this.vy+this.x0;
	if (Key.isDown(Key.ENTER)) {
		if (this.Akseleration<3) {
			this.dl.play();
			this.ch = 1;
			point = new Object();
			point.x = mc3._x;
			point.y = mc3._y;
			localToGlobal(point);
			_root.man._x = point.x;
			_root.man._y = point.y;
			_root.mcc._x = point.x;
			_root.mcc._y = point.y;
		}
	}
	if (this.hitTest(_root.w)) {
		_root.ma._alpha = 100;
		_root.ma._x = _x;
		_root.ma._y = _y;
		_root.ma._rotation = _rotation;
	} else if (this.hitTest(_root.p)) {
		_root.ma._alpha = 100;
		_root.ma._x = _x;
		_root.ma._y = _y;
		_root.ma._rotation = _rotation;
	} else {
		if (_root.ma._alpha>0) {
			_root.ma._alpha -= 5;
		}
	}
	this.vx += akseleration*math.sin(this._rotation*(math.pi/180));
	this.vy -= akseleration*math.cos(this._rotation*(math.pi/180));
	this.afront = math.atan((akseleration+1)*akseleration*2.4);
	if (Key.isDown(Key.UP)) {
		if (this.key.isdown(Key.SHIFT) && this.nos>0) {
			this.nosz._alpha = 100;
			this.nos -= 1;
			if (this.Akseleration<this.maxspeed) {
				this.Aksel_koeff = a+b*1.5;
			}
		} else {
			this.Aksel_koeff = a+b;
			this.nosz._alpha = 0;
		}
		if (this.Akseleration<this.MAXSpeed) {
			this.Akseleration += aksel_koeff;
		}
	} else if (Key.isDown(Key.DOWN)) {
		this.Akseleration -= brake_koeff;
	}
	if (!Key.isDown(Key.UP) && !Key.isDown(Key.DOWN)) {
		if (this.Akseleration>0) {
			this.Akseleration -= BreakPathKoeff;
			if (this.Akseleration<0) {
				this.Akseleration = 0;
			}
		} else if (this.Akseleration<0) {
			this.Akseleration += BreakPathKoeff;
			if (this.Akseleration>0.5) {
				this.Akseleration = 0;
			}
		}
		if (Key.isDown(Key.SPACE)) {
			this.Akseleration /= 1.06;
		}
	}
}

Этот код повесь на машинку .
расход топлива это временной счетчик если клавиша нажата то счетчик обратно считает .
__________________
Вильгельм Тель...........

Старый 18.06.2006, 02:30
PSoWP вне форума Посмотреть профиль Отправить личное сообщение для PSoWP Найти все сообщения от PSoWP
  № 3  
Ответить с цитированием
PSoWP
[+3 18.06.06]
 
Аватар для PSoWP

Регистрация: Jun 2006
Сообщений: 113
Во втором коде ты с физизикой перемудрил в программирование нужна видимость физики а не изложение всей механики.
Я один раз увлекся и у меня для летящей стрелы расчитывалась по углу наклона площадь и по этой площади считалось её торможение в зависимости от направления ветра и трения о воздух...
А потом я убраз 100-150 строчек кода и разница между стрелами была 1-2 пикселя) Так что физика не нужна

И ещё лучше писать по схеме:
if(){} else if(){}...
Тогда если одна ифка сработала остальные не проверяются и это ускоряет код.


Последний раз редактировалось PSoWP; 18.06.2006 в 02:33.
Старый 18.06.2006, 14:27
ToXICus вне форума Посмотреть профиль Отправить личное сообщение для ToXICus Посетить домашнюю страницу ToXICus Найти все сообщения от ToXICus
  № 4  
Ответить с цитированием
ToXICus
 
Аватар для ToXICus

Регистрация: May 2006
Адрес: налево от Лондона
Сообщений: 447
Отправить сообщение для ToXICus с помощью ICQ
Пасибки вам!!!
Тогда можжно еще один примитивный вопрос: что дает
HitTest, Void: NaN. Просто я качнул книгу на английском читаю, но не все шарю, а на мне висит работа нехилая. Объесните тугим людям.

Старый 18.06.2006, 17:56
hochoolaski вне форума Посмотреть профиль Отправить личное сообщение для hochoolaski Найти все сообщения от hochoolaski
  № 5  
Ответить с цитированием
hochoolaski

Регистрация: Jun 2006
Сообщений: 4
HitTest - проверка на пересечение двух объектов.

Простой пример:
Код:
if(объект1.hitTest(объект2))
{....}

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

Регистрация: Jun 2006
Сообщений: 104
Отправить сообщение для Ventur с помощью ICQ
Код:
square_mc.onPress = function() {
    this.startDrag();
};
square_mc.onRelease = function() {
    this.stopDrag();
    if (this.hitTest(circle_mc)) {
    trace("вы попали на круг");
    }
};
hitTest() - метод, который возвращает true, если, как в примере, при перетаскивании мы попали на клип, записаныый в скобках
this.hitTest(circle_mc).
Мухобойка - на мухе
Каомар - на языке лягушки и ТАК ДАЛЕЕ.
Читайте справку. Там ВСЕ есть... in english


Последний раз редактировалось iNils; 18.06.2006 в 18:09.
Старый 19.06.2006, 17:04
ToXICus вне форума Посмотреть профиль Отправить личное сообщение для ToXICus Посетить домашнюю страницу ToXICus Найти все сообщения от ToXICus
  № 7  
Ответить с цитированием
ToXICus
 
Аватар для ToXICus

Регистрация: May 2006
Адрес: налево от Лондона
Сообщений: 447
Отправить сообщение для ToXICus с помощью ICQ
Простите, с математикой не дружу, но почему в пример, навведеном в самом верху ( не на физике) не выполняеться условие по нажатию кнопок?????

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

Регистрация: Jun 2006
Сообщений: 104
Отправить сообщение для Ventur с помощью ICQ
Смотри:
Код:
on (keyPress "<Left>") {
    this._x -= 10;
}
on (keyPress "<Right>") {
    this._x += 10;
}
on (keyPress "<Enter>") {
    trace("Ого! Вводом балуетесь.");
}
Синтаксис храмает сверху в твоем примере. Пробуй так

Старый 20.06.2006, 14:16
ToXICus вне форума Посмотреть профиль Отправить личное сообщение для ToXICus Посетить домашнюю страницу ToXICus Найти все сообщения от ToXICus
  № 9  
Ответить с цитированием
ToXICus
 
Аватар для ToXICus

Регистрация: May 2006
Адрес: налево от Лондона
Сообщений: 447
Отправить сообщение для ToXICus с помощью ICQ
Да нет, смотри сообщение от Nidl. В в первом коде в дебаг вьювере значения xSpeed ySpeed постоянно дают значения NaN, тоесть как таково значения переменные не имеют. Вот я и спрашиваю, кто может объяснить почему так происходит?

Старый 21.06.2006, 10:01
dow вне форума Посмотреть профиль Отправить личное сообщение для dow Найти все сообщения от dow
  № 10  
Ответить с цитированием
dow

Регистрация: Apr 2006
Сообщений: 59
Отправить сообщение для dow с помощью ICQ
http://flasher.ru/forum/attachment.p...1&d=1150866067
Вложения
Тип файла: rar машина_колеса_кнопки.rar (17.1 Кб, 93 просмотров)

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

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

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


 


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


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