Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 20.01.2012, 10:38
Danil вне форума Посмотреть профиль Отправить личное сообщение для Danil Найти все сообщения от Danil
  № 1  
Danil

Регистрация: Jan 2012
Сообщений: 9
По умолчанию Вопрос на тему столкновений 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);//рендерим каждий кадр
          }
      }
}

Старый 20.01.2012, 11:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Вам в API приложений и сред
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 17:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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