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

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

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

Регистрация: Aug 2012
Сообщений: 1
По умолчанию AS 2.0 Проблема с V-Cam.

Делал игру во флеше и мне понадобилось использовать V-камеру.
Пока камера оставалась на месте, всё было нормально.Но когда я сделал так, чтобы камера следовала за игроком, начались странные вещи, связанные со столкновением героя с полом/стенами.

Код V-Cam:

Код AS1/AS2:
import flash.display.BitmapData;
 
_visible = true;
 
addProperty("_x2",get_x2,set_x2);
addProperty("_y2",get_y2,set_y2);
addProperty("_xscale2",get_xscale2,set_xscale2);
addProperty("_yscale2",get_yscale2,set_yscale2);
addProperty("_rotation2",get_rotation2,set_rotation2);
 
////////////////////////////////////////////////////////////////////////////
// Get stage width and height //////////////////////////////////////////////
 
var oldScaleMode:String = stage.scaleMode;
stage.scaleMode = "exactFit";
 
var sW:Number = Stage.width;
var sH:Number = Stage.height;
 
stage.scaleMode = oldScaleMode;
 
////////////////////////////////////////////////////////////////////////////
// Get Vcam width and height ///////////////////////////////////////////////
 
var bounds_obj:Object = this.getBounds(this);
 
var camH:Number = Math.abs(bounds_obj.yMax-bounds_obj.yMin);
var camW:Number = Math.abs(bounds_obj.xMax-bounds_obj.xMin);
 
////////////////////////////////////////////////////////////////////////////
// Creat Point for dynamic registration point //////////////////////////////
 
var rp = {x:this._x, y:this._y};
 
onEnterFrame = function ():Void {
	camControl();
};
 
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
 
function camControl():Void {
 
	////////////////////////////////////////////////////////////////////////////
	// Move the registration point to the vCams current position ///////////////
 
	rp.x = _x;
	rp.y = _y;
 
	////////////////////////////////////////////////////////////////////////////
	// Gets the current scale of the vCam //////////////////////////////////////
 
	var h:Number = camH*(_yscale*.01);
	var w:Number = camW*(_xscale*.01);
 
	////////////////////////////////////////////////////////////////////////////
	// Gets the stage to vCam scale ratio //////////////////////////////////////
 
	var _scaleY:Number = sH/h;
	var _scaleX:Number = sW/w;
 
	////////////////////////////////////////////////////////////////////////////
	// Positions the parent ////////////////////////////////////////////////////
 
	_x2 = (w/2)*_scaleX;
	_y2 = (h/2)*_scaleY;
 
	_xscale2 = _scaleX*100;
	_yscale2 = _scaleY*100;
 
	_rotation2 = -_rotation;
 
	////////////////////////////////////////////////////////////////////////////
	// Apply vCam filters to bitmap ////////////////////////////////////////////
 
	_parent.filters = this.filters;
	_parent.transform.colorTransform = this.transform.colorTransform;
 
}
 
this.onUnload = reset;
 
function reset():Void {
 
	////////////////////////////////////////////////////////////////////////////
	// Resets parent properties ////////////////////////////////////////////////
 
	_parent._xscale = 100;
	_parent._yscale = 100;
	_parent._x = 0;
	_parent._y = 0;
	_parent._rotation = 0;
	_parent._visible = true;
 
}
 
function set_x2(value:Number):Void {
	var a = {x:rp.x, y:rp.y};
	_parent.localToGlobal(a);
	_parent._x += value-a.x;
}
function get_x2():Number {
	var a = {x:rp.x, y:rp.y};
	_parent.localToGlobal(a);
	return a.x;
}
 
function set_y2(value:Number):Void {
	var a = {x:rp.x, y:rp.y};
	_parent.localToGlobal(a);
	_parent._y += value-a.y;
}
function get_y2():Number {
	var a = {x:rp.x, y:rp.y};
	_parent.localToGlobal(a);
	return a.y;
}
 
function get_xscale2():Number {
	return _parent._xscale;
}
function set_xscale2(value:Number):Void {
	setProperty2("_xscale",value);
}
 
function get_yscale2():Number {
	return _parent._yscale;
}
 
function set_yscale2(value:Number):Void {
	setProperty2("_yscale",value);
}
 
function get_rotation2():Number {
	return parent.rotation;
}
function set_rotation2(value:Number):Void {
	setProperty2("_rotation",value);
}
 
function setProperty2(prop:String, n:Number):Void {
	var a = {x:rp.x, y:rp.y};
	_parent.localToGlobal(a);
 
	_parent[prop] = n;
 
	var b = {x:rp.x, y:rp.y};
	_parent.localToGlobal(b);
 
	_parent._x -= b.x-a.x;
	_parent._y -= b.y-a.y;
}
В сообщение вложена сама флешка.
Управление: AD - ходить, Space - прыгать, Q - стрелять.
Нажмите на кнопку c буквой V, чтобы V - камера следовала за игроком.

Эгееей! Неужели никто не знает, или все тание равнодушные?
Вложения
Тип файла: rar as2EngieWorkingcopy4.rar (63.2 Кб, 74 просмотров)


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

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

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


 


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


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