C# 获取相对于旋转单位y3D的轴

C# 获取相对于旋转单位y3D的轴,c#,unity3d,rotation,position,photon,C#,Unity3d,Rotation,Position,Photon,我目前正在Unity and Photon中制作一款“战斗”风格的游戏。然而,我遇到了一个小问题,我不知道如何解决 游戏是1v1,所以一次房间里最多只有两名玩家。我有一个健康栏和弹出损坏文本的广告牌效果。例如,当玩家旋转相机时,文本/健康栏将旋转以查看相机 问题在于损坏文本。它的工作原理是,当敌人被击中时,会出现正确的数字,并且它朝向正确的方向,但是,我想在繁殖位置添加一个随机变量,这样它就不会在同一个地方繁殖。发生的情况是轴根据对象面对的方向(看着玩家)发生变化。换句话说,如果我想要一个随机的

我目前正在Unity and Photon中制作一款“战斗”风格的游戏。然而,我遇到了一个小问题,我不知道如何解决

游戏是1v1,所以一次房间里最多只有两名玩家。我有一个健康栏和弹出损坏文本的广告牌效果。例如,当玩家旋转相机时,文本/健康栏将旋转以查看相机

问题在于损坏文本。它的工作原理是,当敌人被击中时,会出现正确的数字,并且它朝向正确的方向,但是,我想在繁殖位置添加一个随机变量,这样它就不会在同一个地方繁殖。发生的情况是轴根据对象面对的方向(看着玩家)发生变化。换句话说,如果我想要一个随机的x轴,它会根据物体的旋转改变为y和z

以下是一些有助于描述的图片:

问题:

这是我正在使用的代码,它附加到角色:

void ShowFloatingText(int amt)
{
    Transform c = transform.Find("DamageSpawn").transform;
    GameObject go = PhotonNetwork.Instantiate("DamageText", transform.position, Quaternion.identity, 0, null);
    go.transform.SetParent(this.transform);
    go.transform.localPosition = c.localPosition;
    go.transform.localPosition += new Vector3(Random.Range(-randomizeInt.x, randomizeInt.x), Random.Range(-randomizeInt.y/2, randomizeInt.y/2), 0);

    go.GetComponent<TextMesh>().text = amt.ToString();
}
void ShowFloatingText(整数金额)
{
Transform c=Transform.Find(“DamageSpawn”).Transform;
GameObject go=PhotonNetwork.Instantiate(“损坏文本”,transform.position,Quaternion.identity,0,null);
go.transform.SetParent(this.transform);
go.transform.localPosition=c.localPosition;
go.transform.localPosition+=新矢量3(Random.Range(-randomizeInt.x,randomizeInt.x),Random.Range(-randomizeInt.y/2,randomizeInt.y/2),0);
go.GetComponent().text=amt.ToString();
}
它附着到damageText对象并控制旋转:

 public void GetCamera()
 {
    GameObject[] g = GameObject.FindGameObjectsWithTag("Player");
    foreach (GameObject gg in g)
    { 
        if (gg.gameObject.layer == LayerMask.NameToLayer("isSelf"))
        {
            cam = gg.transform.Find("FirstPersonCharacter").GetComponent<Camera>();


        }
    }

}
private void Start()
{
    Destroy(gameObject, 1.5f);
    //transform.position += offset;
    GetCamera();

}
void Update()
{
    if (cam == null) 
    {
        GetCamera();
    }
    else
    {
        transform.LookAt(transform.position + cam.transform.rotation * Vector3.forward, cam.transform.rotation * Vector3.up);
    }

}
public void GetCamera()
{
GameObject[]g=GameObject.FindGameObjectsWithTag(“玩家”);
foreach(游戏对象gg in g)
{ 
如果(gg.gameObject.layer==LayerMask.NameToLayer(“isSelf”))
{
cam=gg.transform.Find(“FirstPersonCharacter”).GetComponent();
}
}
}
私有void Start()
{
销毁(游戏对象,1.5f);
//transform.position+=偏移量;
GetCamera();
}
无效更新()
{
if(cam==null)
{
GetCamera();
}
其他的
{
transform.LookAt(transform.position+cam.transform.rotation*Vector3.forward,cam.transform.rotation*Vector3.up);
}
}
我将非常感激并帮助解决这个问题。 谢谢

试试这个

void ShowFloatingText(int amt)
{
    Transform c = transform.Find("DamageSpawn").transform;
    GameObject go = PhotonNetwork.Instantiate("DamageText", transform.position, Quaternion.identity, 0, null);
    go.transform.SetParent(this.transform);
    go.transform.localPosition = c.localPosition;
    go.transform.localPosition += go.transform.right * Random.Range(-randomizeInt.x/2, randomizeInt.x/2);
    go.transform.localPosition += new Vector3(0, Random.Range(-randomizeInt.y/2, randomizeInt.y/2), 0);

    go.GetComponent<TextMesh>().text = amt.ToString();
}
void ShowFloatingText(整数金额)
{
Transform c=Transform.Find(“DamageSpawn”).Transform;
GameObject go=PhotonNetwork.Instantiate(“损坏文本”,transform.position,Quaternion.identity,0,null);
go.transform.SetParent(this.transform);
go.transform.localPosition=c.localPosition;
go.transform.localPosition+=go.transform.right*Random.Range(-randomizeInt.x/2,randomizeInt.x/2);
go.transform.localPosition+=新矢量3(0,Random.Range(-randomizeInt.y/2,randomizeInt.y/2),0);
go.GetComponent().text=amt.ToString();
}

这将考虑到变换的旋转并沿该向量平移,而不是简单地沿世界空间x轴移动游戏对象,假设Random.Range()返回一个
int

,沿x轴直接更改它只会影响其在世界空间中的x轴。我建议使用转换。正确的是,得到正确的向量,因为它将考虑到文本的旋转,现在不在家(应用程序),但是,我在路上测试它。我会让你知道的。对不起,我对堆栈溢出还不熟悉。谢谢你让我知道