Пятница, 29 Ноября 2024, 15:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
as3+nape как сделать колесо круглым? :)
mumumДата: Среда, 13 Мая 2015, 11:44 | Сообщение # 1
уже был
Сейчас нет на сайте
embed. контуры колеса угловатые(debug красноречив) - машина прыгает. нужен physics editor или я что-то неправильно сделал?

пс((конкретного раздела не нашёл, на ресурсе ас3 не обсуждают?)


Сообщение отредактировал mumum - Среда, 13 Мая 2015, 11:49
YellowAfterlifeДата: Среда, 13 Мая 2015, 13:16 | Сообщение # 2
Сейчас нет на сайте
Круглые объекты делают через nape.shape.Circle а не полигонами. Тут есть пример (в 40+ строках создается круглый объект).

mumumДата: Пятница, 15 Мая 2015, 19:48 | Сообщение # 3
уже был
Сейчас нет на сайте
нашел раздел для ас. ну уже тут написал..

В общем, я через circle и делаю. Вот кусок кода:

Код
//Использование графики кузова
[Embed(source="assets/cabin.png")] private var Cabin:Class;
//Использование графики колеса
[Embed(source="assets/wheel.png")] private var Wheel:Class;
...
//Объединение - машина
car = new Compound();
//решение через импорт графического изображения колеса в Bitmap
//Колесо переднее
wheel_front = new Body(BodyType.DYNAMIC);
//Установка формы колеса(и материала)
wheel_front.shapes.add(new Circle(Cars.WHEEL_RADIUS, null, Material.rubber()));
//Центрирование, для того чтобы было координаты (0, 0) совпадали с центром массы
//wheel_front.align();
//Присвоение графики для колеса
var wheel_frontIso:BitmapDataIso = new BitmapDataIso((new Wheel()).bitmapData, 0x80);
wheel_front = IsoBody.run(wheel_frontIso, wheel_frontIso.bounds);
//Задание начальных координат
wheel_front.position.setxy(290, 106);
graphicF = wheel_frontIso.graphic();
//Добавление графического представления колеса в список отображения(на экран)
addChild(graphicF);
wheel_front.userData.graphicF = graphicF;
wheel_front.compound = car;

/* //или решение через импорт графического изображения колеса в спрайт
wheel_front.userData.sprite wheel_front = new Body(BodyType.DYNAMIC);
wheel_front.shapes.add(new Circle(Cars.WHEEL_RADIUS));
var wheel_frontIso:BitmapDataIso = new BitmapDataIso((new Wheel()).bitmapData, 0x80);
wheel_front = IsoBody.run(wheel_frontIso, wheel_frontIso.bounds);
wheel_front.position.setxy(290, 106); graphicF = wheel_frontIso.graphic();
wheel_front.userData.sprite = new Sprite();
wheel_front.userData.sprite.addChild(graphicF);
addChild(wheel_front.userData.sprite);
wheel_front.userData.graphicF = graphicF;
wheel_front.compound = car; */


Saitei: отредактировал сообщение. Код правильно вставляется следующим образом:
[code]код[/ code] (между "/" и "code" нужно убрать пробел)

Добавлено (15 мая 2015, 19:48)
---------------------------------------------
да, вообщем то проблема была всётаки в том, что создавал полигонами. пример в 40 строках некудышний для моего решения, но после просеивания 3 дней сети(в которой одно старьё), и видоизменения всех взаимосвязей, я заметил полигон smile (как основную причину)

при создании колеса обращаясь из основного класса через:

Код
wheel_front = IsoBody.run(wheel_frontIso, wheel_frontIso.bounds, false);


к IsoBody.as создаём условие для полигона или круга:
Код
if(isPoligon)
   body.shapes.add(new Polygon(q));
else
   body.shapes.add(new Circle(Cars.WHEEL_RADIUS,new Vec2(Cars.WHEEL_RADIUS, Cars.WHEEL_RADIUS)));


Сообщение отредактировал Saitei - Пятница, 15 Мая 2015, 00:08
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг