我目前正在Unity和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();
}
这附加到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);
}
}
我将不胜感激并帮助解决此问题。 谢谢
答案 0 :(得分:1)
试试看
kFIRMessagingRegistrationTokenRefreshNotification
这考虑到了变换的旋转并沿那个向量平移,而不是简单地沿着世界空间x轴移动游戏对象,假设Random.Range()返回{{1} }。