我正在尝试制作像 temple run 2 这样的游戏。我想要与所讨论的和所附屏幕截图相同的效果。当我将硬币动画化到中心顶部但左上角没有运气时,我尝试使用动画它的工作。请帮忙。 谢谢
代码如下:
if (col.gameObject.tag == "500") {
score = CryptograpicEncryption.GetInt ("ScoreKey") + pick500;
CryptograpicEncryption.SetInt ("ScoreKey", score);
ScoreCount.text = "Cash Collected: " + CryptograpicEncryption.GetInt ("ScoreKey").ToString ();
col.gameObject.GetComponent<Animator> ().SetTrigger ("openNote");
col.gameObject.transform.GetChild (1).GetChild (1).gameObject.SetActive (false);
col.gameObject.GetComponent<Animator> ().SetTrigger ("highLeft");
}
最佳答案
这取决于您的游戏,但这里有一些选项:
为您的角色添加一个空的游戏对象,并仔细设置它的位置,使其始终位于所需的 ui 对象后面。然后将硬币从 3d 空间移动到游戏对象的 3d 空间位置。
玩家拿到硬币后立即将其移除,然后使用 UI.Image 在其位置(在 Canvas 的二维空间中)立即移动到 Canvas 的一角创建一枚相同的硬币。您可以使用
2dPosition = Camera.main.WorldToScreenPoint(3dPosition)
将 3d 空间位置转换为 2d
您可以使用
3dPosition = Camera.main.ScreenToWorldPoint(2dPosition)
计算 Canvas 角的 3d 位置,并使硬币跟随该位置。但是随着相机的移动,位置会随着时间的推移而变化,因此您应该每帧重新计算一次。
关于c# - 如何将所有硬币从 3D 空间移动到 2D Canvas 的一角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158061/