C# 旋转对象的x轴和z轴在unity 3d中反转

C# 旋转对象的x轴和z轴在unity 3d中反转,c#,unity3d,C#,Unity3d,我正在Unity中制作一个游戏,这是一个3d项目。在我将一个对象拖动到另一个对象旁边并且距离不是太大之后,我希望它们合并。如果我把对象放在另一个对象的右边,我希望它在右边合并,如果我把它放在左边,它会反转 如果对象旋转,Z轴位置将随X轴位置而改变,我不知道应该将哪个位置添加到拖动的对象,以便将它们合并在一起 有人能帮我写一个代码吗?我知道你想要什么。我想你的意思是两个球互相撞击,你想让它们一起移动。我的第一个想法是,你可以将击中它的对象和被击中的对象设置为一个空游戏对象的子对象,你可以四处移动。

我正在Unity中制作一个游戏,这是一个3d项目。在我将一个对象拖动到另一个对象旁边并且距离不是太大之后,我希望它们合并。如果我把对象放在另一个对象的右边,我希望它在右边合并,如果我把它放在左边,它会反转

如果对象旋转,Z轴位置将随X轴位置而改变,我不知道应该将哪个位置添加到拖动的对象,以便将它们合并在一起


有人能帮我写一个代码吗?

我知道你想要什么。我想你的意思是两个球互相撞击,你想让它们一起移动。我的第一个想法是,你可以将击中它的对象和被击中的对象设置为一个空游戏对象的子对象,你可以四处移动。应使用
OnTriggerCenter(碰撞器其他)
OnCollisionCenter(碰撞器其他)
。我将在下面的示例中使用一个,稍后我将向您展示如何更改它们

使用UnityEngine;
//重要提示:仅将脚本附加到要分组的对象之一。
公共类示例类:单一行为
{
公共游戏对象为空;
无效对撞机(对撞机其他)
{
if(other.gameObject.tag==“exampleTag”)
//将标记更改为要加入的对象的标记。
{
加入(other.gameObject);
}
}
无效连接(游戏对象obj)
{
var parent=实例化(空,transform.position);
transform.parent=parent.transform;
obj.transform.parent=parent.transform;
}
}
下面是一个基本脚本,它将对象连接到一个组中,父对象(控制其他两个对象的对象)可以同时移动/旋转这两个对象。 如果您想让他们使用
OnCollisionCenter()
,(答案底部的链接用于何时使用触发器或碰撞),那么您可以将
OnTriggerCenter(碰撞器其他)
更改为
OnCollisionCenter(碰撞其他)
。现在,父对象位于包含脚本的对象的中心。我们可以使用插值将其更改为两个碰撞对象的中间位置。插值基于0-1的值获取两个向量或浮点之间的点。将
Join(gameobjectobj)
方法的一部分更改为:

。。。
无效连接(游戏对象obj)
{
Vector3 middle=Vector3.Lerp(transform.position,obj.transform.position,0.5f);
var parent=实例化(空,中间);
transform.parent=parent.transform;
obj.transform.parent=parent.transform;
}
它找到对象位置和命中对象位置的中间。(可以将0.5f更改为0.1f,使其成为目标位置到命中目标位置的十分之一。)

您可能只想看看它们是否有一定的距离,然后执行代码的其余部分。如果您这样做,那么您将希望更改以下代码:


使用UnityEngine;
//重要提示:仅将脚本附加到要分组的对象之一。
公共类示例类:单一行为
{
公共浮点数maxDist=1f;
公共游戏对象为空;
无效更新()
{
GameObject[]objects=FindGameObjectsSwithTag(“exampleTag”);
//将标记更改为要加入的对象的标记。
for(int i=0;i如果(距离),请添加您的代码。听起来您混淆了本地和全球方向。