我的大学项目需要一些帮助。我有一个圆柱体,需要它作为线圈。例如,如果我触摸圆柱体的表面,它的高度会减小(在 y 方向上缩放),就像按下线圈一样,然后当我把手移开时,它会恢复到原来的大小。
这是我到目前为止所达到的,但我仍然有一些我无法解决的问题。
public class Deformation : MonoBehaviour
{
Vector3 tempPos;
private void InteractionManager_SourceUpdated(InteractionSourceUpdatedEventArgs hand)
{
if (hand.state.source.kind == InteractionSourceKind.Hand)
{
Vector3 handPosition;
hand.state.sourcePose.TryGetPosition(out handPosition);
float negXRange = transform.position.x - transform.localScale.x;
float posXRange = transform.position.x + transform.localScale.x;
float negYRange = transform.position.y - (transform.localScale.y / 2);
float posYRange = transform.position.y + (transform.localScale.y / 2);
float negZRange = transform.position.z - transform.localScale.z;
float posZRange = transform.position.z + transform.localScale.z;
float handX = handPosition.x;
float handY = handPosition.y;
float handZ = handPosition.z;
if ((negXRange <= handX) && (handX <= posXRange) && (negYRange <= handY) && (handY <= posYRange) && (negZRange <= handZ) && (handZ <= posZRange))
{
tempPos.y = handPosition.y;
transform.localScale = tempPos;
}
else
{
tempPos.y = 0.3f;
transform.localScale = tempPos;
}
}
}
// Use this for initialization
void Start()
{
tempPos = transform.localScale;
InteractionManager.InteractionSourceUpdated += InteractionManager_SourceUpdated;
}
- 我将两个脚本附加到我的对象(圆柱体)上,即 HoloToolKit 中的 TapToPlace 脚本和上述变形脚本。问题是当我部署到我的 HoloLens 进行测试时,当我首先将圆柱体放置到需要的位置然后尝试使其变形之后,它被放置但没有变形。如果我以另一种方式尝试两种工作。任何想法为什么变形脚本在 TapToPlace 之后不起作用?
- 当我的 HoloLens 观察时,圆柱体在某种程度上是透明的。我的意思是我可以通过它看到我的手。我需要它更坚固。
- 我想知道我是否可以使用延迟之类的东西,因为当我使用上述变形脚本时,圆柱体被缩放到我的手位置,然后非常快速地缩放回其默认大小并且看起来好像在闪烁。
首先,我将圆柱体放在一个装置上(例如桌子),然后开始变形。当我在上述变形脚本中注释 else 部分时,它被缩放并保持稳定而没有恢复到原始大小。它是对称缩放的,因此它的高度从上到下减小,导致圆柱体的底部远离桌子。我需要圆柱体的底部始终保持稳定并接触它下面的桌子。
注意:我使用的是 Unity 2017.3.1f1(64 位)- HoloToolkit-Unity-2017.2.1.3
先感谢您。