我的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;
}
}但上述任何一种方法都不能正常工作,所以我希望你方能给我一些更好的建议。
编辑:--总的来说,我正试图实现这样的目标:迎头赶上-凯切普-高分1274
发布于 2018-09-22 18:03:19
有一个教程系列的团结,关于滚动和移动的三维球,可以帮助你找到你的问题的基础。希望能帮上忙。
https://stackoverflow.com/questions/52443000
复制相似问题