Unity 2D 游戏 if/else 错误

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

基本上我正在创建一个 2D 游戏,角色必须抓取物体,所以我做了一个 if/else 语句,并且 if(grab) 条件起作用,但 else/else if(drop) 条件不起作用,我知道我来自 else if bc if a do if(!isGrabbing) ...然后 if(isGrabbing) ...角色抓住对象并立即丢弃它,我尝试了 switch 语句,但错误是相同的,如果我执行 2 个 switch 语句,他也会抓住并立即丢弃它

这是我的代码,希望有人能解决:

        if(grabCheck.collider != null && grabCheck.collider.tag == "objets")
        {
            if(Input.GetKeyDown("g"))
            {
                if(!isGrabbing)
                {
                    grabCheck.collider.gameObject.transform.parent= Holder;
                    grabCheck.collider.gameObject.transform.position= Holder.position;
                    grabCheck.collider.gameObject.GetComponent<Rigidbody2D>().isKinematic = true;
                    isGrabbing = true;
                    if(isGrabbing == true)
                    {
                        Debug.Log("isGrabbing");
                    }
                }
                else if(isGrabbing) 
                {
                    grabCheck.collider.gameObject.transform.parent = null;
                    grabCheck.collider.gameObject.transform.position= grabDetect.position;
                    grabCheck.collider.gameObject.GetComponent<Rigidbody2D>().isKinematic = false;
                    isGrabbing = false;
                    if(isGrabbing == false)
                    {
                        Debug.Log("isn't grabbing");
                    }               

                }
                
            }
            
        }

我尝试过一个 switch 语句,一个 while 循环(这显然破坏了统一),抓取和 Drop 的多个函数,但唯一稍微起作用的是做两个同时激活的 if 语句,我尝试映射两个用于抓取和放下的不同键,但效果不佳,我不认为问题来自我的代码,但我不知道

c# unity-game-engine 2d game-development game-engine
1个回答
0
投票

这只需要一个简单的调整。只需从更新函数调用父函数即可。这样,一旦玩家按下按键取消抓取物品,您就可以放下它。我认为你的代码不起作用,因为你没有实现循环,因此,代码只是向前移动,而不查看是否按下了取消抓取键。

© www.soinside.com 2019 - 2024. All rights reserved.