实例化有时仅在统一中起作用

时间:2018-08-09 17:43:51

标签: unity3d clone instantiation projectile

在2D侧滚式游戏中我遇到了一个奇怪的问题,在这种情况下,单位有时仅在按下火时会创建我的抛射物克隆,无论是否克隆了手榴弹,它都会从库存中正确移除1个手榴弹。不。 这是我的代码

void ThrowGranade()
{
    if (grenandeInventory > 0)
    {

        GameObject grenade = Instantiate(projectile, projectileSpawnPoint.transform.position, Quaternion.identity) as GameObject;
        grenandeInventory =- 1;
        //am.ThrowGrenade();

    }
    else if (grenandeInventory <= 0)
    {
        grenandeInventory = 0;
    }                
}

以及更新功能中包含的触发按钮脚本

        if (Input.GetButtonDown("Fire1"))
    {
        if (grenandeInventory>0)
        {
            grenandeInventory -= 1;
            ThrowGranade();
        }

    }

我在弹丸本身的启动功能中添加了力

void Start () {
    #region REFERENCES
    anim = GetComponent<Animator>();
    am = FindObjectOfType<AudioManager>();
    rb = GetComponent<Rigidbody2D>();
    player = FindObjectOfType<PlayerScript>();
    capsule = GetComponent<CapsuleCollider2D>();
    #endregion

    rb.AddForce(Vector2.right * player.projectileForce, ForceMode2D.Force);


}

1 个答案:

答案 0 :(得分:1)

您不应该在投掷手榴弹方法中以及在调用该方法之前单击按钮时都进行检查。现在的设置方式是,如果您有1个手榴弹,则在调用throwGrenade之前从手榴弹计数中减去,以便您的throwGrenade看到您有0个手榴弹。就是这样做。

if (Input.GetButtonDown("Fire1"))
{
        ThrowGranade();
}

您的ThrowGranade()方法已经处理了逻辑。