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

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

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

Регистрация: Apr 2006
Сообщений: 421
По умолчанию Вращение клипа относительно вложенного

Здравствуйте все, я делаю игру - танки. Игра реализована так: есть клип карта. В нем лежит клип танк игрока и все остальные клипы. Мне нужно сделать так, чтобы перемещалась и вращалась сцена а танк игрока оставался на месте. Понятно, что раз я вращаю сцену, а танк находится не в ее центре, то чтоб он находился на месте относительно экрана его нужно каждый раз смещать. Вот код при помощи которого я это делаю

Код:
class Map extends MovieClip {
	var array:Array;
	var tank;
	
	//Расчет танка расстояния от центра карты
	private function countTankR(){
		return Math.sqrt(this.tank._x*this.tank._x+this.tank._y*this.tank._y);
	}
	
	function setTank(tank) {

		this.tank = tank;
	}
	
	function Map() {
		this.tank._x=0;
		this.tank._y=0;
		trace("map create");
		array = [];
	}
	function pushToArray(element) {
		trace("push to array start");
		this.array.push(element);
	}
	function getArray():Array {
		return array;
	}
	function onEnterFrame() {
		
		//Если танк может двигатся(не врезался ни во что)
		if (this.tank.needToMoveMap()) {
                        //Нахожу расстояние от центра клипа до танка
			var r:Number=countTankR();

			//Вычисляю координаты танка относительно экрана 
			var x1:Number=r*Math.sin(this._rotation*Math.PI/180);
			var y1:Number=r*Math.cos(this._rotation*Math.PI/180);									
			//Поворачиваю танк
			this._rotation-=tank.getRotationSpeed();
                         
                         //Вычисляю координаты танка относительно экрана после вращения
			var x2:Number=r*Math.sin(this._rotation*Math.PI/180);
			var y2:Number=r*Math.cos(this._rotation*Math.PI/180);	
			
			//Вычисляю смещение отн. экрана
			var dx:Number=x2-x1;
			var dy:Number=y2-y1;
			
			
			//Смещаю карту для того, чтобы учесть перемещение, которое получается при вращении танка
			this._x-=dx;
			this._y-=dy;
			
                         //Смещаю карту для того, чтобы учесть перемещение сцены при перемещении танка
			this._x -= this.tank.getDX();
			this._y -= this.tank.getDY();
		}
		
	}
}
В общем что-то не работает. Подскажите кто может - что здесь не так. С уважением, Владимир

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
тут на форуме где-то выложен был танк с башней... поробуйте поиском
__________________
"We Are The Champions My Friends!" Queen

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

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

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


 


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


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