手指触摸并拖动旋转3D球-Unity 3D

时间:2018-09-21 11:41:25

标签: unity3d

我的3d球在向前方向连续移动,因此我想为此进行X旋转。另外,玩家在屏幕上水平拖动球,因此对于这种水平运动,我想进行Z旋转。

为了实现我的愿望,我将球制作为父代和子代游戏对象,其中父代游戏对象仅包含对撞机和刚体,这将进行实际的物理运动。 另一方面,子游戏对象仅包含网格渲染器,这将实现所需的旋转。

下面的图片使您对我的结构有了更多的了解:

球形父母: enter image description here Ball Child: enter image description here

为使球网格像父物理球一样旋转,我编写了以下代码:

public class BallMeshRolling : MonoBehaviour
{
     private Vector3 ballLastPosition;


void Start ()
{
    ballLastPosition = transform.parent.position;
}

void Update ()
{

    //implementation-1
    //float speed = Vector3.Distance (transform.parent.position, ballLastPosition) * 30f;
    //transform.RotateAround (transform.position, Vector3.right, speed);

    //implementation-2
    //Vector3 differenceInPosition = (transform.parent.position - ballLastPosition).normalized;
    //transform.Rotate (differenceInPosition * 10f);

    //implementation-3
    Vector3 differenceInPosition = (transform.parent.position - ballLastPosition).normalized * 50f; 
    Quaternion rotation = Quaternion.LookRotation(differenceInPosition);
    transform.rotation = rotation;

    ballLastPosition = transform.parent.position;
}
}

但是上述方法均无法正常工作,因此我希望您能提出其他更好的建议。

编辑:总体而言,我正在尝试实现以下目标: Catch up - Ketchapp - Highscore 1274

1 个答案:

答案 0 :(得分:0)

Unity提供了一个有关滚动和移动3d球的教程系列,可以帮助您弄清楚问题的基础。希望对您有所帮助。

Roll-a-ball tutorial in Unity Tutorials