使用铰链接头移动物体,但将其与铰链连接

时间:2018-01-03 02:01:11

标签: unity3d

我的手机游戏中有多个球体连接到铰链接头。球体能够摆动并相互撞击,导致其他球体摆动。我通过触摸球体并将其拖动到新位置来创建球体中的运动。放手应该导致我刚刚移动的球体相应地摆动。

问题在于我能够将球体移动到铰链提供的空间之外。我从不希望球体移动到任何他们无法使用铰链摆动的地方。我能够将球体从原始位置移动多个单位/米,理想情况下我不能移动它们超过几厘米。如果我在铰链中达到极限,球体应该停止移动。

这是我控制球体移动的脚本代码:

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;
    }
}

非常感谢任何帮助!如果我需要解释更多信息或显示该问题的视频,请告诉我。

1 个答案:

答案 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>