【问题标题】:On Finger Touch and Drag Rotate 3D Ball - Unity 3D手指触摸和拖动旋转 3D 球 - Unity 3D
【发布时间】:2018-09-23 02:03:19
【问题描述】:

我的 3d 球一直在向前移动,所以我想给这个加上 X 旋转的玩家在屏幕上水平拖动球,所以对于这个水平移动,我想给 Z 旋转。

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

下图让您对我的结构有更多了解:

球父: 球童:

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

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

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    Unity 提供了一个关于滚动和移动 3d 球的教程系列,可以帮助您找出解决问题的基础知识。希望能有所帮助。

    Roll-a-ball tutorial in Unity Tutorials

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多