【问题标题】:Unity: How would I go about creating a power up system?Unity:我将如何创建一个加电系统?
【发布时间】:2015-06-10 07:32:38
【问题描述】:

我想在我的 2d 平台游戏中实现一个加电系统,但我的加电系统不仅仅是提供额外的速度或补充健康,我的加电系统将像完全不同的角色,具有不同的精灵、大小和能力(例如反转重力、发射激光、爬墙等)。

此刻我只想尝试让玩家更改为不同的电源。有谁知道我该怎么做?我正在考虑在玩家与电源接触时摧毁玩家,然后在其位置产生具有新能力的新玩家,但我不确定。

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    我想说最有效的方法是使用事件系统;

    PowerUpScriptIdea: powerup 里面会有一个 OnTriggerEnter() 方法,如果一个对象发生碰撞,这个方法会检查它是否是玩家,如果是的话,隐藏/销毁这个 powerup,但是在这样做之前,发送一个消息/事件通知玩家已收集到一个道具。

    PlayerScriptIdea:会有powerup()方法对应事件powerup,一旦该事件被调用,player就会有speed+=200,或者jump+=10等。

    如果你想节省内存,而不是销毁 powerup,隐藏 powerup 的 meshrenender,然后将其移动到它出现的下一个位置,等等,这样你就可以重复使用相同的 powerup 对象。

    【讨论】:

    • 但我正在考虑使用能破坏某些块的悬停板、枪、靴子等道具,我不知道用这种方法会有多难。一周以来我一直在考虑这个问题,我想我也许可以这样做,但我不确定。当玩家收集电源时,会生成一个预制件,即电源启动后的玩家,旧玩家将被摧毁。然后任何将播放器作为变量的脚本都会再次搜索它。但我不确定付诸行动有多难
    【解决方案2】:

    您好 Zak,如果您只想出售角色,我认为您需要为 Resources 文件夹中的每个角色保留预制件。当玩家购买角色时,您只需替换当前角色的预制路径,并在需要时从资源中加载。

    对于攀爬或重力反转等道具,您需要为每个道具编写脚本,并在玩家购买时附加到当前角色。您可以管理电源UPS,如下所示。

    abstract class PowerUp : MonoBehaviour
    {
        public void activate();
    }
    
    class GravityRevert : PowerUp 
    {
    private Character character_;
    void Awake()
    {
        character_ = getComponent<Character>();
    }
    
    public void activate()
    {
        if(character_.gravity > 0)
             character_.gravity = -character_.gravity;
    }
    
    }
    

    如果你想卖精灵。您需要将精灵保存在 Resources 文件夹中,当玩家购买布料时,您只需替换当前角色的布料路径即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2011-04-08
      • 2021-02-28
      • 2021-12-03
      • 2022-06-15
      • 2022-10-07
      • 1970-01-01
      相关资源
      最近更新 更多