![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2014
Сообщений: 27
|
Вообщем так сказать топик на будущее, т.к я не нашел нормальных пояснений использования цитруса с нейпом, а по отзывам нейп немного превосходит бокс2д в плане быстродействия когда на сцене много объектов. Если кто имел опыть использования цитруса и нейпа плз отзовитесь как будут серьёзные вопросы))
Я вообще и сам разбираюсь потихоньку но мало ли. Заранее спасибо) |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Посмотрел бегло что такое цитрус, сборник движков Starling - для работы с 2D графикой на видеокарте, Away - 3D движок + движки физики. Тебе это нужно?
|
|
|||||
|
Регистрация: Feb 2014
Сообщений: 27
|
А чем это так плохо?На сколько слышал многие разрабатывают игры именно на нем, да и я пока не дошел до варианта получше.
|
|
|||||
|
Регистрация: Feb 2014
Сообщений: 27
|
АП теме, есть ли у кого ссылки на англо или русскоязычные туториалы или еще что по созданию игр на цитрусе?или сорцы. А то много функций я там не могу понять, а некоторые даже не знаю, соответственно становится тяжелее реализовывать хоть что-то)
Добавлено через 3 часа 14 минут Вообще по сути я посмотрел на цитрус и понял что возможности там очень урезаны из-за упрощения процесса разработки, а перековыривать и переделывать половину очень сложно и долго. Пойду-ка я наверно делать всё просто с чистого Нейпа |
|
|||||
|
Регистрация: Jan 2011
Сообщений: 200
|
Цитата:
https://github.com/alamboley/Citrus-Engine-Examples мне лично ковыряния в них хватило, чтобы иметь представление плюс куча туторов http://citrusengine.com/tutorials/ |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 27
|
Цитата:
|
|
|||||
|
использовал эту связку для 2D ScrollShoter игры (starling/feathers, nape)
довести до ума руки не дошли да и в целом как то не вижу смысла использовать citrus, простой набор либ, без особо удобной связки как движка если есть вопросу, помогу чем смогу пример класса кораблика игрока в 2д шутере package zanac.game.objects { import flash.events.MouseEvent; import nape.phys.BodyType; import aze.motion.EazeTween; import citrus.core.CitrusEngine; import citrus.input.controllers.Keyboard; import citrus.objects.NapePhysicsObject; import citrus.sounds.SoundManager; import nape.shape.Circle; import starling.display.Image; import zanac.game.embed.Atlases; import zanac.game.objects.weapon.Bullet; public class PlayerShip extends NapePhysicsObject { private static var PLAYER_SHIP_SPEED:Number = 4; private static const MAX_WEAPON_COUNTER:uint = 4; private var isMouseDown:Boolean = false; private var firstWeaponCount:uint = 0; private var c:Circle = new Circle(20); public function PlayerShip( name:String, params:Object = null ) { params.width = 100; params.height = 100; super(name, params); view = new Image(Atlases.getAtlas().getTexture("texture_33")); updateCallEnabled = true; // get the keyboard var ce:CitrusEngine = CitrusEngine.getInstance(); var kb:Keyboard = ce.input.keyboard; //add action to the keyboard kb.addKeyAction("UP", Keyboard.UP); kb.addKeyAction("UP", Keyboard.W); kb.addKeyAction("DOWN", Keyboard.DOWN); kb.addKeyAction("DOWN", Keyboard.S); kb.addKeyAction("LEFT", Keyboard.LEFT); kb.addKeyAction("LEFT", Keyboard.A); kb.addKeyAction("RIGHT", Keyboard.RIGHT); kb.addKeyAction("RIGHT", Keyboard.D); ce.stage.addEventListener(MouseEvent.MOUSE_DOWN, downHandler ); ce.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler ); ce.stage.addEventListener(MouseEvent.MOUSE_UP, upHandler ); } protected function downHandler(event:MouseEvent):void { isMouseDown = true; addBullet(); var e:EazeTween = new EazeTween(this, true ); } override protected function createBody():void { super.createBody(); body.type = BodyType.KINEMATIC; body.cbTypes.add( Bullet.bullettype ); body.allowRotation = false; body.allowMovement = false; } override protected function createFilter():void { super.createFilter(); c.filter.collisionGroup = 2; c.filter.collisionMask = parseInt("100", 2); // in binary this is 1111...11001 } override protected function createShape():void { body.shapes.clear(); body.shapes.add(c); } protected function upHandler(event:MouseEvent):void { isMouseDown = false; } protected function moveHandler(event:MouseEvent):void { if ( body) { body.position.x = event.stageX; body.position.y = event.stageY; } } override public function update(timeDelta:Number):void { var ce:CitrusEngine = CitrusEngine.getInstance(); if ( body) { if (ce.input.isDoing("UP") ) body.position.y-=PLAYER_SHIP_SPEED; if (ce.input.isDoing("DOWN") ) body.position.y+=PLAYER_SHIP_SPEED; if (ce.input.isDoing("LEFT") ) body.position.x-=PLAYER_SHIP_SPEED; if (ce.input.isDoing("RIGHT") ) body.position.x+=PLAYER_SHIP_SPEED; } if ( isMouseDown ) firstWeaponCount++; if ( firstWeaponCount >= MAX_WEAPON_COUNTER ) { firstWeaponCount = 0; addBullet(); } super.update(timeDelta); } private function addBullet():void { SoundManager.getInstance().playSound("shoot1_96"); var ce:CitrusEngine = CitrusEngine.getInstance(); var b:Bullet = new Bullet("bullet", { y:body.position.y, x:body.position.x } ); ce.state.add( b ); } } } |
|
|||||
|
Регистрация: Jan 2011
Сообщений: 200
|
Цитата:
![]() |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 27
|
Спасибо большое всем за советы, так что я решил начать с нейпа, мне от цитруса как от фреймворка пользы 0, так как многие функции которые описываются в нем мне попросту не нужны, а остальные всё равно надо переделывать, так что начну с чистого листа. На счет нейпа я нашел не много туториалов или еще чего, но я наконец разобрался нормально что такое гитхаб(оО) и был приятно удивлен(раньше не понимал его смысла, тупил сильно)...Буду сидеть разбираться, тут тему наверное создам по вопросам касающимся нейпа, а эту прошу модераторов закрыть, она более не актуальна.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|