【发布时间】:2017-08-26 04:35:40
【问题描述】:
我有一个平台,它围绕轴旋转并保持玩家随之旋转。
一开始,我做了一个平台绕y轴旋转
[SerializeField]
bool counterclockwise; // rotation left or right?
[SerializeField]
private int speed;
private void Start()
{
if (counterclockwise)
speed = -speed;
}
private void Update()
{
transform.Rotate(new Vector3(0, speed * Time.deltaTime, 0));
}
private void OnTriggerEnter(Collider col)
{
col.transform.parent = transform; // keep the player as a child, to rotate him with the platform rotation
}
private void OnTriggerExit(Collider col)
{
col.transform.parent = null; // remove the player as a child
}
这真的很棒。所以当试图在 x 轴或 z 轴上旋转平台时,会出现一些错误。
当玩家得到一个平台的孩子(在 x 轴或 z 轴上旋转时)他变得非常大,物理崩溃,他自动飞到没有重力的空中,...
有人可以帮我解决这个错误吗?
所以当前的代码是
[SerializeField]
Vector3 rotationVector;
private void Update()
{
transform.Rotate(rotationVector * Time.deltaTime);
}
private void OnTriggerEnter(Collider col)
{
col.transform.parent = transform;
}
private void OnTriggerExit(Collider col)
{
col.transform.parent = null;
}
【问题讨论】:
-
您的播放器对象的比例是否统一? X:1 Y:1 Z:1 ?
-
平台的孩子有rigidbody2D和collider2D吗?
-
@EmreE 是的,目前玩家有这个比例
-
@HieuNguyenTrung 是的,我的播放器连接了一个刚体。但这是一个 3D 游戏。
-
@Question3r 我无法确认差异 rn,但你可以试试这样
col.gameObject.transform.SetParent(transform);