如何在Unity中镜像游戏对象?

问题描述 投票:2回答:1

我有两个游戏对象,我希望它们像在图片中一样放在臀部上,但我希望它们一起移动和旋转,这样它们就会像这样放置。我正在控制黑色物体所以我只是使用了transform.rotation = Quaternion.Euler(0, 0, player.transform.eulerAngles.z + 180);才能获得正确的旋转,但我无法正确控制位置。这是我希望如何放置它们的草图.Visual explanation of the positions

当向某个方向移动我的黑色物体时,这两个游戏对象不会保持连接状态。这是问题的表示.Problem

在这里你有我的确切脚本和照片:我用来移动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;

检查员的确切照片:enter image description here

这就是我希望它们一直被放置的方式:https://bugguide.net/images/cache/SL2/ZZL/SL2ZZLPZMLOH6HHRUHRREHVH7HVHZLWZLL6Z7H6Z8H5Z7HEZ5LEZ5H8ZSLAHRL2Z4LBZ7LAZILAZXLGZKL2ZMHAHMH.jpg

[更新]我使用了@Ali Kanat的答案,我就在那里:Update正如你在图片中看到的那样,两个虫子现在一个在另一个上面,但它们正在一起移动。

c# visual-studio unity3d position mirror
1个回答
0
投票

你可以让红色物体(或你拥有的任何其他物体)成为黑色物体的子物并旋转黑色物体。这样您就可以保留几何体,而不必修改其他对象的transformcomponent。

评论后,我假设大女士的bug是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 + enemySizeY)。无论你的玩家的方向如何,这都会有效。

© www.soinside.com 2019 - 2024. All rights reserved.