c# - 如何将所有硬币从 3D 空间移动到 2D Canvas 的一角

标签 c# unity3d

我正在尝试制作像 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");
}

enter image description here

最佳答案

这取决于您的游戏,但这里有一些选项:

  1. 为您的角色添加一个空的游戏对象,并仔细设置它的位置,使其始终位于所需的 ui 对象后面。然后将硬币从 3d 空间移动到游戏对象的 3d 空间位置。

  2. 玩家拿到硬币后立即将其移除,然后使用 UI.Image 在其位置(在 Canvas 的二维空间中)立即移动到 Canvas 的一角创建一枚相同的硬币。您可以使用 2dPosition = Camera.main.WorldToScreenPoint(3dPosition)

  3. 将 3d 空间位置转换为 2d
  4. 您可以使用 3dPosition = Camera.main.ScreenToWorldPoint(2dPosition) 计算 Canvas 角的 3d 位置,并使硬币跟随该位置。但是随着相机的移动,位置会随着时间的推移而变化,因此您应该每帧重新计算一次。

关于c# - 如何将所有硬币从 3D 空间移动到 2D Canvas 的一角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158061/

相关文章:

unity3d - 如何在运行时向 Unity Tilemap 添加可编写脚本的磁贴?

c# - 如何测试类在 C# 中是否正常工作?

c# - 设计一个应用程序,但我可以在应用程序运行时创建新的 MySQL 字段吗?

c# - 调用AzureInformationProtection Powershell命令时出现C#Microsoft InformationProtection解密错误

c# - http压缩是否也会压缩 View 状态?

bundle - 如果我没有 .bundle,如何从 Unity3d 调用 C 中的非托管函数? (苹果)

C# Windows 10 IoT StreamSocketListener 在 Release模式下随机停止监听

c# - Unity 在随机游戏对象位置播放音频剪辑

c# - 来自 Asset Store 的 FPS Constructor 中的 LightningBolt 脚本

c# - 在Android设备上从Unity3D访问SQLite数据库时出现问题