基本上我正在创建一个 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 语句,我尝试映射两个用于抓取和放下的不同键,但效果不佳,我不认为问题来自我的代码,但我不知道
这只需要一个简单的调整。只需从更新函数调用父函数即可。这样,一旦玩家按下按键取消抓取物品,您就可以放下它。我认为你的代码不起作用,因为你没有实现循环,因此,代码只是向前移动,而不查看是否按下了取消抓取键。