Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Nape] Nape - нужно сделать drag static объектов (http://www.flasher.ru/forum/showthread.php?t=205912)

Isfet 30.12.2013 06:43

Nape - нужно сделать drag static объектов
 
Смысл такой, нужно сделать перемещение объектов, чтобы они вели себя как Static, то есть двигается только тот объект , который мы перетаскиваем, а остальные - неподвижны, причем коллизии и все дела - должны работать.Может, если в этом движке нет такой возможности, кто нибудь подскажет другие движки, где такое можно сднлать.

FlasherEgor 30.12.2013 11:44

Если вы имеете в виду, что объект перетаскивается, но на его перемещение не влияют другие объекты, тогда как сам он может их отталкивать, то можно использовать Box2D, а в нем - кинематический тип тел... Насчет Nape я точно не знаю, можно ли там так сделать.

Isfet 30.12.2013 12:59

Цитата:

Сообщение от FlasherEgor (Сообщение 1156222)
Если вы имеете в виду, что объект перетаскивается, но на его перемещение не влияют другие объекты, тогда как сам он может их отталкивать

вроде не так, попробую переформулировать :
есть 5 объектов (1...5), начинаю тащить 1-й, остальные (2-5) должны стать как стена(неподвижны, их нельзя сдвинуть и перемещаемый объект может к ним только прижаться, сдвинуть их не может(тоесть не может передать им свою энергию)). Прижимается объект в зависимости от положения мышки и в зависимости от геометрии фигур .

Tails 30.12.2013 14:25

Isfet
Код AS3:

BodyType.KINEMATIC

Документация
По правильному, при "драге" телу нужно задавать силы движения, в точку драга. Если манипулировать свойствами x, y напрямую, это будет похоже на "телепортацию".

Isfet 30.12.2013 16:32

я сделал перемещение кинематик объектов, задал скорости, но объекты проходят друг через друга, как настроить коллизии?

Tails 30.12.2013 16:54

На кинематические и статические объекты - не могут влиять другие тела.

Статические тела всегда стоят на месте. Кинематические - могут двигаться, но на их собственное движение другие тела не влияют, так-же кинематические и статические тела не могут повлиять друг на друга. Их движение всегда - фиксировано. (пример: двигающиеся платформы в марио)

Если вам нужно двигающееся тело, на движение которого могут повлиять другие объекты, значит вам нужно динамическое тело.

Isfet 30.12.2013 17:19

ну да получается динамическое, но как сделать чтобы другие объекты не двигалась от соприкосновения с перетаскиваемым объектом? делать массу у объекта который тащу очень маленькой?? а те которые стоят делать с большой массой?

FlasherEgor 30.12.2013 17:39

Может быть, на время движения можно делать неперемещаемые объекты статическими, а тот, что перемещается - динамическим? Или так нельзя?

Isfet 30.12.2013 18:54

Вложений: 2
да, это то что нужно), осталось разобраться как сделать чтобы центр объекта привязывался к курсору без эластичности, а всегда был жестко закреплен в координатах (0,0)

вот возникла такая проблема
Вложение 30298

тащим - красный круг, положение его видно из рисунка, мышь - находится в синей точке, и круг красный должен быть в месте где сейчас я нарисовал черный круг, как такое сделать? если делаю жесткую сцепку(stiff = true), то объект залазит на другой объект вот так

Вложение 30299

а такое недопустимо, как сделать чтобы не залазил?

по энтерфрейму искалось ближайшее к мыши возможное положение перетаскиваемого объекта, скорее всего тут надо что-то мудрить с "телепортацией" )

vorodis2 03.01.2014 13:37

body-статическое тело.

body.spase=null.
body.pozition.setxy(100,100);
body.spase=spase.

Логика проста в момент переноса вырезаем статическое тело из мира, и меняем его позиции, потом опять вставляем в мир, у меня шикарно работает.


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

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