void SetOthersAt(Vector3 playerPosition,Vector3 otherPosition,GameObject showUI)
{
//计算方向
Vector3 CachePosion = new Vector3(otherPosition.x, 0, otherPosition.z) - new Vector3(playerPosition.x, 0, playerPosition.z);
CachePosion = new Vector3(CachePosion.x, CachePosion.z, 0);
//计算箭头指示方向
float angleZ = Vector3.Angle(new Vector3(0, 1, 0), CachePosion);
Vector3 angleNormal = Vector3.Cross(new Vector3(0, 1, 0), CachePosion);
angleZ *= Mathf.Sign(Vector3.Dot(angleNormal, new Vector3(0, 0, 1)));
showUI.transform.eulerAngles = new Vector3(0, 0, angleZ);
//计算箭头在屏幕中的位置
CachePosion = CachePosion.normalized * (Screen.width > Screen.height ? Screen.width -10: Screen.height-10);
CachePosion.x = Mathf.Clamp(CachePosion.x, -Screen.width / 2 + 15, Screen.width / 2 - 15);
CachePosion.y = Mathf.Clamp(CachePosion.y, -Screen.height / 2 + 15, Screen.height / 2 - 15);
showUI.GetComponent<RectTransform>().anchoredPosition3D = CachePosion;
}
如何在游戏中屏幕边界显示追踪标记
本文介绍了一种在游戏开发中实现玩家追踪标记的方法。通过计算玩家与目标位置之间的相对坐标,利用Unity引擎的数学工具计算箭头指示方向,并确定其在屏幕上的位置,确保追踪标记始终出现在屏幕边界上。
4645

被折叠的 条评论
为什么被折叠?



