如上图的效果
第一次接触3d的东西,方向搞不太清楚
一开始想的简单了用
想用 touch_move 实现差值x 和y进行x y的旋转,到了后面才发现少了一个z
callback(EventTouch){
let ch = EventTouch.getDelta();
this.testNode.setRotationFromEuler(angle.x - ch.y,angle.y + ch.x,0);
}
查阅了unity相关的资料(刚入行写过几个月unity现在全忘了),发现unity有帖子说过这个功能如下
示例代码:
private bool onDrag = false; //是否被拖拽//
public float speed = 6f; //旋转速度//
private float tempSpeed; //阻尼速度//
private float axisX = 1;
//鼠标沿水平方向移动的增量//
private float axisY = 1; //鼠标沿竖直方向移动的增量//
private float cXY;
void OnMouseDown()
{
//接受鼠标按下的事件//
axisX = 0f; axisY = 0f;
}
void OnMouseDrag() //鼠标拖拽时的操作//
{
onDrag = true;
axisX = -Input.GetAxis("moveX");
//获得鼠标增量//
axisY = Input.GetAxis("moveY");
cXY = Mathf.Sqrt(axisX * axisX + axisY * axisY); //计算鼠标移动的长度//
if (cXY == 0f) { cXY = 1f; }
}
float Rigid() //计算阻尼速度//
{
if (onDrag)
{
tempSpeed = speed;
}
else
{
if (tempSpeed > 0)
{
tempSpeed -= speed * 2 * Time.deltaTime / cXY; //通过除以鼠标移动长度实现拖拽越长速度减缓越慢//
}
else {
tempSpeed = 0;
}
}
return tempSpeed;
}
void Update()
{
// this.transform.Rotate(new Vector3(axisY, axisX, 0) * Rigid(), Space.World); //这个是是按照之前方向一直慢速旋转
if (!Input.GetMouseButton(0))
{
onDrag = false;
this.transform.Rotate(new Vector3(axisY, axisX, 0)*0.5f, Space.World);
}
}
想了一下午没有试出来,还查了一下资料 发现貌似creator 3d中rotate()这个函数可以实现,但是四元数不知道如何取值
所以想请教各路大神,如何实现方法或者思路