【发布时间】:2018-12-01 07:48:55
【问题描述】:
我有一个对象,我想设置它的轴心量(0 和1 之间的数字)。当轴心为0 时,项目将设置为其最小角度,当它为1 时,项目将旋转至其最大角度。
通过获取此值将基于用户手指在屏幕上的位置,因此对象将注视手指。在0 和1 之间转换值。
目前我有这个,但由于角度始终超过 1,因此它将枢轴最大化为 1。
public void SetAngle(Touch touch) {
Vector3 position = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, Camera.main.nearClipPlane));
float angle = Vector3.Angle(position, transform.position);
CurrentAngle = angle;
ToasterAnimator.SetFloat("Angle", CurrentAngle);
}
在动画中,x 旋转为 -100,Angle 为 0,-160,Angle 为 1。如何将矢量3角度的触摸值转换为0-1值?
- 黑线 = 最小/最大角度
- 绿线 = 所需角度
- 红线 = 接地
- 黄点 = 用户手指
我需要的是一个介于 0 和 1 之间的数字,代表那个黄点的位置。
【问题讨论】:
-
touch.position 是世界位置还是屏幕位置?不确定这个角度代表什么
-
不,是屏幕坐标。
-
transform.position 在世界位置吗?如果是这样的话......将屏幕坐标与世界坐标进行比较并获得这些向量之间的角度并没有多大意义。
-
“角度”是动画偏移距离的百分比。其中
0是动画的开始(x 旋转为-100),1是动画的结束(x 旋转为-160)。 -
你的参考点是什么?我假设它是相机。目前,浮动角度 = Vector3.Angle(position, transform.position);正在根据它们的世界位置获取两个对象之间的角度