如何让一个 if 语句只在另一个 if 语句已经发生时才返回 true?

问题描述 投票:0回答:0

好吧,这可能是一个愚蠢的问题,但我是新手。我有一个敌人 AI,只有当敌人对玩家可见并且按下空格键时,它才会走向玩家。我想做第二个 if 语句,如果玩家在敌人行走时第二次按下空格键,或者如果敌人在玩家当前位置的 2 米范围内,那么敌人就会跑。

{
    public NavMeshAgent enemy;
    public Transform player;

    public float speedWalk = 6f;
    public float speedRun = 60f;
    public float groundDrag;
    public float playerHeight;

    bool isWalking;


    Renderer m_Renderer;

    void Move(float speed)
    {
        enemy.speed = speed;
    }

    private void Start()
    {
        m_Renderer = GetComponent<Renderer>();
        isWalking = false;
        enemy.speed = speedWalk;
    }

    private void OnBecomeInvisible()
    {
        enabled = false;
    }

    //DelayEnemyChase
    IEnumerator delayChase()
    {
        yield return new WaitForSeconds(2);

        Move(speedWalk);
        enemy.SetDestination(player.position);
    }

    //Visible by camera
    void OnBecameVisible()
    {
        enabled = true;
        
        //starts walking towards player position
        if ((Input.GetKey(KeyCode.Space)) && (m_Renderer.isVisible) && (isWalking == false))
        {
            StartCoroutine(delayChase());
            isWalking = true;
        }

       //starts walking towards player position
        else if ((isWalking == true) && (Input.GetKey(KeyCode.Space)) && (m_Renderer.isVisible))
        {
            Move(speedRun);
            enemy.SetDestination(player.position);
            isWalking = false;
        }
    }

    private void Update()
    {
            //sees if enemy is visible + space bar is pressed
            OnBecameVisible();
    }

}

这让我很困惑,这就是我所拥有的,但它根本不起作用。任何帮助表示赞赏!!!!

c# unity3d if-statement unityscript
© www.soinside.com 2019 - 2024. All rights reserved.