Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос на тему столкновений EllipsoidCollider, в чем моя ошибка (http://www.flasher.ru/forum/showthread.php?t=174226)

Danil 20.01.2012 10:38

Вопрос на тему столкновений EllipsoidCollider, в чем моя ошибка
 
Подскажите, пожалуйста, как сделать так что бы box при столкновении с box2 останавливался, у меня получается, что при box сразу же попадает на место столкновения, я пробовал конструкцию
Код AS3:

if(box.x<destination.x;){box.x=destination.x;}

но тут получается как-то однобоко, то есть если box будет с права то ничего не выйдет, во общем подскажите пожалуйста !!!
Код AS3:

package {
 
        import alternativa.engine3d.core.Camera3D;
        import alternativa.engine3d.core.Object3D;
        import alternativa.engine3d.core.Resource;
        import alternativa.engine3d.core.View;
 
        import flash.display.Sprite;
        import flash.display.Stage3D;
        import flash.events.Event;
        import flash.geom.Vector3D;
 
        import alternativa.engine3d.materials.FillMaterial;
        import alternativa.engine3d.primitives.Box;
        import alternativa.engine3d.collisions.EllipsoidCollider;
 
 
        public class TestEllipsoidCollider extends Sprite
        {
 
            private var rootContainer:Object3D = new Object3D();//создаем контейнер в который всё помещаем
 
            private var camera:Camera3D;//создаем камеру
            private var stage3D:Stage3D;//создаем сцену
 
                        private var box:Box; //создаем куб
                        private var box2:Box; //создаем куб2
 
                        private var collider:EllipsoidCollider = new EllipsoidCollider(10, 10, 10);
 
            public function TestEllipsoidCollider()
                        {
              //камера
              camera = new Camera3D(0.1, 10000);//инициализируем камеру
              camera.view= new View (stage.stageWidth, stage.stageHeight);//инициализируем вьюпорт
              camera.rotationX = -120 * Math.PI / 180; // меняем координати
                          camera.y = -800;
                          camera.z = 400;
                          addChild(camera.view);//добавляем вьпорт
              rootContainer.addChild(camera);//добавляем камеру в наш контейнер
 
                          //обьект - куб
                          box = new Box(100, 100, 100, 4, 4, 4); //инициализируем куб(ширина-х, глубина-z,висота-у,кол семент)
                          var material:FillMaterial = new FillMaterial(0xFF7700); //создаем материал и задаем цвет
                          box.setMaterialToAllSurfaces(material); //на все сторони добавляем материал
                          rootContainer.addChild(box); //добавляем обьект в наш контейнер
 
                          box2 = new Box(100, 100, 100, 4, 4, 4); //инициализируем куб(ширина-х, глубина-z,висота-у,кол семент)
                          var material2:FillMaterial = new FillMaterial(0xAF0836); //создаем материал и задаем цвет
                          box2.setMaterialToAllSurfaces(material2); //на все сторони добавляем материал
                          box2.x = 400;
                          rootContainer.addChild(box2); //добавляем обьект в наш контейнер
 
 
                          //сцена
              stage3D = stage.stage3Ds[0];// Запрашиваем stage3D[0]
              stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContextCreate);//Назначаем слушатель на событие возникающее когда Context3D создан.
              stage3D.requestContext3D();//запрашиваем его в нашу stage3D
          }
 
          private function onContextCreate(e:Event):void //
                  {
              for each (var resource:Resource in rootContainer.getResources(true)) //перебираем все ресурсы созданные нами в rootContainer и добавляем в stage3D.context3D
                          {
                        resource.upload(stage3D.context3D);
              }
              stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);//когда все выполненно
          }
 
          private function onEnterFrame(e:Event):void
                  {
 
                            box.rotationZ -= 0.01; // вертим куб
                            var position:Vector3D = new Vector3D(box.x, box.y, box.z);
                            box.x += 2;
                            var delta:Vector3D = new Vector3D(box.x, box.y, box.z);
 
                          // проверка на столкновения камеры с box2
 
                          var destination:Vector3D = collider.calculateDestination(position, delta, box2);
                      box.x = destination.x;
 
 
 
              camera.render(stage3D);//рендерим каждий кадр
          }
      }
}


iNils 20.01.2012 11:54

Вам в API приложений и сред


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

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