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;
}
如何在游戏中屏幕边界显示追踪标记