【发布时间】:2015-06-10 07:32:38
【问题描述】:
我想在我的 2d 平台游戏中实现一个加电系统,但我的加电系统不仅仅是提供额外的速度或补充健康,我的加电系统将像完全不同的角色,具有不同的精灵、大小和能力(例如反转重力、发射激光、爬墙等)。
此刻我只想尝试让玩家更改为不同的电源。有谁知道我该怎么做?我正在考虑在玩家与电源接触时摧毁玩家,然后在其位置产生具有新能力的新玩家,但我不确定。
【问题讨论】:
标签: unity3d
我想在我的 2d 平台游戏中实现一个加电系统,但我的加电系统不仅仅是提供额外的速度或补充健康,我的加电系统将像完全不同的角色,具有不同的精灵、大小和能力(例如反转重力、发射激光、爬墙等)。
此刻我只想尝试让玩家更改为不同的电源。有谁知道我该怎么做?我正在考虑在玩家与电源接触时摧毁玩家,然后在其位置产生具有新能力的新玩家,但我不确定。
【问题讨论】:
标签: unity3d
我想说最有效的方法是使用事件系统;
PowerUpScriptIdea: powerup 里面会有一个 OnTriggerEnter() 方法,如果一个对象发生碰撞,这个方法会检查它是否是玩家,如果是的话,隐藏/销毁这个 powerup,但是在这样做之前,发送一个消息/事件通知玩家已收集到一个道具。
PlayerScriptIdea:会有powerup()方法对应事件powerup,一旦该事件被调用,player就会有speed+=200,或者jump+=10等。
如果你想节省内存,而不是销毁 powerup,隐藏 powerup 的 meshrenender,然后将其移动到它出现的下一个位置,等等,这样你就可以重复使用相同的 powerup 对象。
【讨论】:
您好 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 文件夹中,当玩家购买布料时,您只需替换当前角色的布料路径即可。
【讨论】: