我有两个游戏对象,我希望将它们放在屁股上,就像在图片中一样,但是我希望它们一起移动和旋转,以便始终将它们放置成那样。我正在控制黑色对象,因此我只使用transform.rotation = Quaternion.Euler(0, 0, player.transform.eulerAngles.z + 180);
来获得正确的旋转,但是我无法正确地获得位置。这是我要如何放置它们的草图。
在向某个方向移动我的黑色对象时,两个游戏对象不会保持连接状态。这是问题的表示。
这是您的确切脚本和照片: 我用于移动ai的脚本:
transform.position = player.transform.position + new Vector3(0, player.transform.localScale.y + transform.localScale.y - 1, 0);
transform.rotation = Quaternion.Euler(0, 0, player.transform.eulerAngles.z + 180);
transform.parent = player.transform;
这就是我希望它们始终放置的方式:https://bugguide.net/images/cache/SL2/ZZL/SL2ZZLPZMLOH6HHRUHRREHVH7HVHZLWZLL6Z7H6Z8H5Z7HEZ5LEZ5H8ZSLAHRL2Z4LBZ7LAZILAZXLGZKL2ZMHAHMH.jpg
[更新]我使用了@Ali Kanat的答案,我已经中途了: 正如您在图片中看到的那样,这两个错误现在彼此重叠,但是它们正在按照应有的方式移动。
答案 0 :(得分:0)
您可以仅使红色对象(或您拥有的任何其他对象)成为黑色对象的子对象并旋转黑色对象。这样,您可以保留几何图形,而不必修改其他对象的transform
组件。
在评论之后,我假设最大的错误是Player
。要以编程方式实现您想要的目标,可以像这样:
//forward, up or right depends on which direction is the front of your player
transform.position = player.transform.position + ((-player.transform.forward) * (player.transform.localScale.y
+ transform.localScale.y)/2);
transform.forward = (-player.transform.forward);
因为您要实现的是找到在播放器后方方向上(PlayersizeY +敌人SizeY)的位置。无论您的播放器方向是什么,这都将起作用。