我的手机游戏中有多个球体连接到铰链接头。球体能够摆动并相互撞击,导致其他球体摆动。我通过触摸球体并将其拖动到新位置来创建球体中的运动。放手应该导致我刚刚移动的球体相应地摆动。
问题在于我能够将球体移动到铰链提供的空间之外。我从不希望球体移动到任何他们无法使用铰链摆动的地方。我能够将球体从原始位置移动多个单位/米,理想情况下我不能移动它们超过几厘米。如果我在铰链中达到极限,球体应该停止移动。
这是我控制球体移动的脚本代码:
GameObject selectedObject;
Vector3 screenPoint;
Vector3 offset;
void Update () {
if (Input.touchCount == 0)
{
return;
}
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began) // when screen is touched...
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenToWorldPoint(touch.position), Camera.main.transform.forward, out hit)) // ...cast a ray...
{
if (hit.collider.tag == "Sphere") //...and check if ray hits a sphere
{
selectedObject = hit.collider.gameObject;
screenPoint = Camera.main.WorldToScreenPoint(selectedObject.transform.position);
offset = selectedObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, screenPoint.z));
}
}
}
if (touch.phase == TouchPhase.Moved)
{
Vector3 touchPoint = new Vector3(touch.position.x, touch.position.y, screenPoint.z);
Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touchPoint) + offset;
selectedObject.transform.position = touchPosition;
}
}
非常感谢任何帮助!如果我需要解释更多信息或显示该问题的视频,请告诉我。
答案 0 :(得分:1)
我知道我来晚了,但是您可以在要移动的对象上使用AddTorque()
和RigidBody
方法,但是只有在对象上有<div class="item_key" *ngFor="let x of demo">
<span class="key_span">Value</span>
<input [(ngModel)]="teller[x.id]" class="add_key">
</div>
<pre>{{teller | json}}</pre>
时,该方法才有效。 / p>