Vector 如何在CC3摄影机或CC3网格节点上设置原点轴
所以我在Obj-C中使用Cocos3D 由于我最初的问题似乎不够清楚,无法得到任何答案,我又写了一遍 我正在制作一个3D查看器,通过它,我希望能够在屏幕上拖动手指,使我的对象(Vector 如何在CC3摄影机或CC3网格节点上设置原点轴,vector,rotation,cocos3d,Vector,Rotation,Cocos3d,所以我在Obj-C中使用Cocos3D 由于我最初的问题似乎不够清楚,无法得到任何答案,我又写了一遍 我正在制作一个3D查看器,通过它,我希望能够在屏幕上拖动手指,使我的对象(Dobj)自行旋转 -(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; } -(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement { CC3Vector rot
Dobj
)自行旋转
-(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
Dobj.rotation = CC3VectorAdd(saveXYAxisStartLocation, rotateVector);
}
问题是,当我这样做时,对象轴也会旋转,之后会有一些拖动,X轴将是垂直的(而不是水平的),旋转会变得非常混乱
因此,我想在每次拖动后将轴重置为原点
诸如此类:
-(void) startRotatingObjectOnXYAxis { saveXYAxisStartLocation = Dobj.rotation; }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
[Dobj moveMeshOriginTo:CC3VectorMake(0.0f, 0.0f, saveXYAxisStartLocation.z)];
CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
Dobj.rotation = CC3VectorAdd(saveXYAxisStartLocation, rotateVector);
}
但它没有任何效果
在我的示例中,
aMovement
是(uipangestrerecognizer*)手势。translation
值。好的,我最终以以下解决方案结束:
-(void) startRotatingObjectOnXYAxis { objectXYAxisStartRotation = CC3VectorMake(0.0f, 0.0f, 0.0f); }
-(void) rotateObjectOnXYAxisBy: (CGPoint) aMovement
{
CC3Vector rotateVector = CC3VectorMake(aMovement.y, aMovement.x, 0.0f);
[Dobj rotateBy:CC3VectorDifference(rotateVector, objectXYAxisStartRotation)];
objectXYAxisStartRotation = rotateVector;
}
rotateBy似乎只旋转对象,而不旋转轴。
所以问题解决了