我有一只胳膊,它工作得很好但是,当我试图扔一个物体时,它不起作用。
经过一番思考,我做到了这一点:
cube.GetComponent<Rigidbody2D>().velocity = player.GetComponent<Rigidbody2D>().velocity;
这件事发生了:
我试图将一个刚体附着在手臂上,但是他在重力作用下坠落,我试图关闭重力,但它没有用。
我的问题是,如何让它与手臂一起使用?
编辑:整个代码以便更好地解释(它附在手上):
void Update () {
Collider2D touch = Physics2D.OverlapCircle(touchDetect.position, 0.01f, objectLayer);
mao1.SetBool("Ligado", ligado);
if (Input.GetKey(KeyCode.LeftShift)) {
ligado = true;
} else {
ligado = false;
}
if (Input.GetKey(KeyCode.LeftShift) && touch != null && ligado == true)
{
touch.gameObject.transform.parent = this.transform;
cubo.GetComponent<Rigidbody2D>().isKinematic = true;
Physics2D.IgnoreLayerCollision(10, 12, true);
cubo.GetComponent<Rigidbody2D>().velocity = player.GetComponent<Rigidbody2D>().velocity;
}
else if (touch != null && ligado == false)
{
touch.gameObject.transform.parent = null;
cubo.GetComponent<Rigidbody2D>().isKinematic = false;
Physics2D.IgnoreLayerCollision(10, 12, false);
}
}
答案 0 :(得分:1)
如果我理解的话,当立方体与手臂尖端接触时按下LeftShift并将立方体“粘”到手臂上,然后当你释放LeftShift时,你想要将立方体扔向某个方向。 / p>
您可以使用 Rigidbody2D 中的 AddForce 函数,使用精心计算的向量来实现此目的:
OSStatus status = noErr;
NSMutableDictionary *privateKeyAttr = [[NSMutableDictionary alloc] init];
NSMutableDictionary *publicKeyAttr = [[NSMutableDictionary alloc] init];
NSMutableDictionary *keyPairAttr = [[NSMutableDictionary alloc] init];
//.....................
只需在 greenCubeCenter 变量中放置一个多维数据集中心的变换。
这个算法应该(如果我理解了一切的话,再次)将对象从Cube方向远离你的立方体 - 用ThrowForceMagnitude的力量推动手臂的尖端(你需要在某处定义) )
更新:
好的,在理解了所有内容之后,这里有一个更完整的答案:
// In the script outside of a function
public Transform greenCubeCenter;
// In your Update function
else if (touch != null && ligado == false)
{
touch.gameObject.transform.parent = null;
cubo.GetComponent<Rigidbody2D>().isKinematic = false;
Physics2D.IgnoreLayerCollision(10, 12, false);
// Below the important part
Vector2 force = (touchDetect.position - greenCubeCenter.position).normalized * ThrowForceMagnitude; // ThrowForceMagnitude needs to be defined somewhere
touch.GetComponent<Rigidbody2D>().AddForce(force);
}
这不是一个完美的代码,从算法来讲(即使是一个单词)它应该是正确的,但你应该逐行深入了解并理解所有内容(我认为我评论得足够多)。
请注意,我删除了对Cubo的引用,我认为你可以在objectLayer中获取任何内容。