3d вращение куба с помощью Buildbox 3 - PullRequest
0 голосов
/ 07 ноября 2018

Таким образом, проблема заключается в вращении куба с использованием buildbox 3 и узла по умолчанию «touch rotate». В начале он вращается нормально, но если вы поворачиваете его на 180 градусов, он начинает вращаться в противоположном направлении. Ребята, вы можете помочь мне решить эту проблему? Я не могу закончить свою игру из-за этого. Специалист службы технической поддержки Buildbox сказал, что он работает, как задумано, но это не может быть правдой ... Прикреплены снимок экрана с кодом узла, файл с кодом и видео, иллюстрирующее проблему. Видео с проблемой: https://www.dropbox.com/s/wnre9ss8x7dk7s5/VID_20181027_223043.mp4?dl=0]

изображение с кодом: изображение

и фактический код:

var _speed;
var _enabled = false;
var _prev;
var _target 
var _smooth = 1;
var pos;		
//----Standart
function init(){
	this.enableTouch();
	_speed = this.attribute('Speed');
	_smooth = this.attribute('Smooth');
	_target = this.entity().rotation();

}
function update( dt ){
		let ep = this.entity().rotation();
		this.entity().setRotation(_target.x * (1-_smooth) + ep.x*_smooth,
									_target.y * (1-_smooth) + ep.y*_smooth,
									_target.z * (1-_smooth) + ep.z*_smooth
						  		);
}
function signal( name, value){
	_enabled = value;


}
//----Move
function rotate( point ){
	if(_enabled){
		let delta = new Vec3(point.x-_prev.x, 
						point.y-_prev.y,
						0);
		_target = new Vec3(_target.x+delta.y*_speed.x,
							_target.y+delta.x*_speed.y,
							_target.z+delta.z*_speed.z);
	}
}
component.rotate = rotate;	

//----Touches
function touchBegan( point ){
	_prev = point;
}
component.touchBegan = touchBegan;

function touchMove( point){
	this.rotate( point );
	_prev = point;
	
}
component.touchMove = touchMove;

function touchEnded(){
}
component.touchEnded = touchEnded;	
...