unity set transform parent 不改变player的比例
Unity set transform parent without change player's scale
我正在尝试用活动地板移动我的播放器。当我将玩家的父变换设置为地板变换时,它起作用了。它运行良好,但每一秒,播放器的比例都会发生变化。我可以在不改变播放器比例的情况下设置变换父对象吗?
这是我尝试过的:
private void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("MovingObject"))
{
transform.parent = other.gameObject.transform;
}
}
转换中的所有信息都是层次结构中的链接信息。这意味着parent中的变化,直接改变了children。
如果需要保持层级,保持播放器的比例,可以乘以parent中应用的比例的倒数,这样层级中的比例相乘为1,[=中的比例15=] 不受影响。
尝试:
private void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("MovingObject"))
{
transform.parent = other.gameObject.transform;
PlayerGameObject.transform.scale = new Vector3(
PlayerGameObject.transform.scale.x/other.gameObject.transform.x,
PlayerGameObject.transform.scale.y/other.gameObject.transform.y,
PlayerGameObject.transform.scale.z/other.gameObject.transform.z)
}
}
我正在尝试用活动地板移动我的播放器。当我将玩家的父变换设置为地板变换时,它起作用了。它运行良好,但每一秒,播放器的比例都会发生变化。我可以在不改变播放器比例的情况下设置变换父对象吗?
这是我尝试过的:
private void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("MovingObject"))
{
transform.parent = other.gameObject.transform;
}
}
转换中的所有信息都是层次结构中的链接信息。这意味着parent中的变化,直接改变了children。 如果需要保持层级,保持播放器的比例,可以乘以parent中应用的比例的倒数,这样层级中的比例相乘为1,[=中的比例15=] 不受影响。
尝试:
private void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("MovingObject"))
{
transform.parent = other.gameObject.transform;
PlayerGameObject.transform.scale = new Vector3(
PlayerGameObject.transform.scale.x/other.gameObject.transform.x,
PlayerGameObject.transform.scale.y/other.gameObject.transform.y,
PlayerGameObject.transform.scale.z/other.gameObject.transform.z)
}
}