![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
ТЫ напиши подробнее что хочешь сделать, будет время помогу. И расскажу, что сам умею.
|
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
ну значит так вот игра: http://www.playground.ru/flash/shot/1583/ опираясь на нее я хочу сделать нечто подобное. Ходит человечек собирает бонусы и убивает врагов. Сейчас у меня проблемы со стенами-не знаю как сделать чтоб герой не входил и не влипал в стены. Порикомендовали сделать с помощью тайлов но порыв в нете пару часов я не нашел ничо толкового на эту тему
|
|
|||||
|
Замахнулся ты конечно на серьёзную игру.
Для данной игры тебе полезно будет почитать здесь: http://siliren.ru/content/view/119/1/ И вот эту статью посмотри. http://xitri.com/2008/09/22/simple-engine-flash-game-top-view.html#more-109 |
|
|||||
|
[+1 09.03.11]
Регистрация: Mar 2010
Сообщений: 128
|
Сделай все стены одного размера и квадратные, размести их в двухмерный массив,
Перед движением проверяй столкновении: Допусти у тебя стены 100х100 точки регистрации по середине x1=будущий_x%100; y1=будущий_y%100; r=персонаж.ширина%100+1; for(var:i=x1-r;i<=x1+r;i++) for(var:j=y1-r;i<=y1+r;j++) { var стена:Стена=массив_стен[i][j]; if(Math.abs(стена.x-будущий_x)>100/2+персонаж.ширена/2 && Math.abs(стена.y-будущий_y)>100/2+персонаж.ширена/2) { персонаж.x=будущий_x; персонаж.y=будущий_y; break; } } Последний раз редактировалось medvedya2; 03.12.2010 в 23:17. Причина: break; |
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
вот у меня вопрос возник. Есть массив где 1-стена, 0-земля. Есть картинка с изображением квадратика стены, то бишь тайла. Так вот, как сделать чтоб этот массив отображался на сцене и на месте 0-было пустое пространство, а на месте 1- отбражался квадратик стены
и еще вот есть герой внутри которого кадры с поворотами в разных направлениях. как определять на каком кадре внутри этого героя находится ползунок анимации? Последний раз редактировалось reNiks; 04.12.2010 в 13:02. |
|
|||||
|
[+1 09.03.11]
Регистрация: Mar 2010
Сообщений: 128
|
Нужно писать в классах, они не такие страшные как выглядят
.Создай класс стена в классе стены создай статическую ссылку на твой массив в конструкторе передавай параметры дискретный X Y (тоесть с учётом что умножиться на размер тайтла) далее в конструкторе добавляй в массив свою стену массив[x][y]=this; далее экран_игры.addChild(this); package { import flash.display.Sprite; public class Wall extends MovieClip { public static var array:Array; public static var gameScreen:Sprite;//сылка на экран public var dx:int; public var dy:int; public var type:int; public function Wall(dx:int,dy:int,type:int) { array[dx][dy]=this; this.x=dx*100; this.y=dy*100; this.dx=dx; this.dy=dy; this.type=type; this.gotoAndStop(type);//во flash в библиотеке создай мувик стена и задай привязку к этому классу каждый кадр будет отдельный вид стены. gameScreen.addChild(this); } } } |
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
вот что я выдал путем недолгих размышлений:
var speedX:Number; var speedY:Number; var tgtX:Number; var tgtY:Number; var boxP:Number; stage.addEventListener(Event.ENTER_FRAME, tgtYz); function tgtYz (e:Event):void { if (boxP == 4) { tgtY = box.y - 3; }else if (boxP == 2) { tgtY = box.y + 3; } } stage.addEventListener(Event.ENTER_FRAME, tgtXz); function tgtXz (e:Event):void { if (boxP == 1) { tgtX = box.x + 3; }else if (boxP == 3) { tgtX = box.x - 3; } } stage.addEventListener(Event.ENTER_FRAME, stolknovenie); function stolknovenie (e:Event):void { if (tgtX == box2.x || tgtX == box4.x) { speedX = 0; }else{ speedX = 3; } } stage.addEventListener(Event.ENTER_FRAME, stolknovenie2); function stolknovenie2 (e:Event):void { if (tgtY == box1.y || tgtY == box3.y) { speedY = 0; }else{ speedY = 3; } } это должно проверять пересечение персонажа и стен и изменять переменную скорости. но есть одна небольшая проблма: оно не работает. помогите пожалуйста. тут привожу остальной код box.stop(); stage.addEventListener(KeyboardEvent.KEY_DOWN, moveF); function moveF (e:KeyboardEvent):void { if (e.keyCode == Keyboard.UP) { box.y -= speedY; box.gotoAndStop(4); boxP = 4; }else if (e.keyCode == Keyboard.DOWN) { box.y += speedY; box.gotoAndStop(2); boxP = 2; }else if (e.keyCode == Keyboard.LEFT) { box.x -= speedX; box.gotoAndStop(3); boxP = 3; }else if (e.keyCode ==Keyboard.RIGHT) { box.x += speedX; box.gotoAndStop(1); boxP = 1; } } |
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
люди!!! может кто подробнее объяснить как отображать массив. я не понимаю как. пожалуйста помогите. напишите подробно
Добавлено через 8 минут я наверно тупой но вот тока что получается: package { import flash.display.Sprite; public class Wall extends MovieClip { public static var gameScreen:Sprite;//сылка на экран public var dx:int; public var dy:int; public var type:int; private var container_world:MovieClip; var world:Array = new Array; world [0] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; world [1] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [2] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [3] = [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [4] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1]; world [5] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1]; world [6] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [7] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [8] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1]; world [9] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1]; world [10] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1]; world [11] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [12] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [13] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [14] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1]; world [15] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1]; world [16] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1]; world [17] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [18] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [19] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; public function Wall(dx:int,dy:int,type:int); { world[dx][dy]=this; this.x=dx*100; this.y=dy*100; this.dx=dx; this.dy=dy; this.type=wall; this.gotoAndStop(1);//во flash в библиотеке создай мувик стена и задай привязку к этому классу каждый кадр будет отдельный вид стены. gameScreen.addChild(this); } } }; |
|
|||||
|
[+1 09.03.11]
Регистрация: Mar 2010
Сообщений: 128
|
package { import flash.display.Sprite; public class Wall extends MovieClip { public static var gameScreen:Sprite;//сылка на экран public var dx:int; public var dy:int; public var type:int; private var container_world:MovieClip; public static var world:Array = new Array; world [0] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; world [1] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [2] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [3] = [1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [4] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1]; world [5] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1]; world [6] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [7] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [8] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1]; world [9] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1]; world [10] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1]; world [11] = [1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [12] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [13] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1]; world [14] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1]; world [15] = [1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1]; world [16] = [1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1]; world [17] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [18] = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; world [19] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; public static function createWorld():void { for(var i:int;i<world.length;i++) for(var j:int;j<world[i].length;j++) if(world[i][j]!=0)new Wall(i,j,world[i][j]); } public function Wall(dx:int,dy:int,type:int):void { world[dx][dy]=this; this.x=dx*100; this.y=dy*100; this.dx=dx; this.dy=dy; this.type=wall; this.gotoAndStop(1);//во flash в библиотеке создай мувик стена и задай привязку к этому классу каждый кадр будет отдельный вид стены. gameScreen.addChild(this); } } } |
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
спасибо я наконец-то разобрался
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:15. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|