
[!]嘿,伙计们,我需要帮助!我需要我的爪子手才能抓住我的物品持有人(橙色的东西旁边的红色球。)我的对象已经有一个弹簧接头,所以我希望我的爪子能够抓住它,并用球拉它。当我的手张开时,它就会射出。但当我试图抓住它的时候,我的手正好穿过。我的爪手有刚体,盒对撞机,配置连接,并且是由这个代码动画。
public class open2close : MonoBehaviour
{
public float speed;
private Animation anim;
Rigidbody rb;
void Start()
{
anim = gameObject.GetComponent<Animation>();
rb = GetComponent<Rigidbody>();
}
void Update()
{
//********************Open pincher ********************
if (Input.GetKey(KeyCode.X))
{
anim.Play("clawopen");
}
//*******************Close pincher ********************
if (Input.GetKey(KeyCode.Y))
{
anim.Play("clawclose");
}
}
}至于我的物体保持架,它有箱形对撞机、弹簧接头、刚体和旋转约束。有人能指点我或帮助我做我能做的事吗?谢谢。
发布于 2022-09-17 16:41:40
最好不要在爪子上安装对撞机。这是因为你把刚体和动画混为一谈,这会变得很混乱。我会记起所有的东西,特别是爪上的箱子对撞机。将其设置为触发器。您可以将布尔值放入if语句以打开和关闭爪。这样,您可以将对象的位置设置为在爪处(如果他们正在触摸)。
将您的脚本更改为
public class open2close : MonoBehaviour
{
public float speed;
private Animation anim;
[SerializeField] bool isClosed;
Rigidbody rb;
void Start()
{
anim = gameObject.GetComponent<Animation>();
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKey(KeyCode.X))
{
anim.Play("clawopen");
isClosed = false;
}
if (Input.GetKey(KeyCode.Y))
{
anim.Play("clawclose");
isClosed = true;
}
}
void OnTriggerStay(Collider obj)
{
Rigidbody colRb = obj.attachedRigidbody;
if (colRb != null && isClosed)
{
colRb.position = transform.position;
}
}
}让我知道,如果这是可行的和具体!谢谢:)
https://stackoverflow.com/questions/73751834
复制相似问题