我有一个物体(橙色),它绑在铰链关节(黑色)上并且可以围绕它旋转。在某些时候,当我检测到与其他物体发生碰撞时,我必须将其剪切到那里(红色)。为了做到这一点,我想缩小这些点(黑色和红色)之间的对象,但我需要它保持与铰链关节的连接并保持其宽度。
void OnCollisionEnter2D(Collision2D collision)
{
GameObject obj = collision.gameObject;
Vector3 endPos =collision.contacts[0].point;
float scaleX = Vector3.Distance(new Vector3(startPos.x, 0, 0), new Vector3(endPos.x, 0, 0));
float scaleY = Vector3.Distance(new Vector3(0, startPos.y, 0), new Vector3(0, endPos.y, 0));
Vector3 newScale = new Vector3(scaleX,scaleY, 1);
obj.transform.parent.transform.localScale = obj.transform.TransformPoint(newScale);
}
起始位置由铰链关节的位置初始化:
startPos = GameObject.Find("hair").GetComponent<HingeJoint2D>().transform.position;
我将对象包裹在父对象中并缩放它,因为我在某处读到,然后它会保留在原处:
我尝试了很多方法,但我无法让它保持在适当的位置并保持正确的尺寸。 我该如何正确实施?