对象正在向世界矢量移动

时间:2017-06-21 12:27:58

标签: c# unity3d

我有一个playerAttack()方法,当玩家点击鼠标左键时会被激活(由于物理条件,条件在FixedUpdate())。该方法有一个Raycast,可以将玩家面前的敌人推开。问题是由于Vector3,敌人被推向了世界的方向。我尝试使用AddRelativeForce()而不是AddForce(),但它仍在向世界方向发展。这是代码:

public void playerAttack()
{
    RaycastHit hit;
    if (Physics.Raycast(player.transform.position, player.transform.forward, out hit, range))
    {
        if (hit.rigidbody != null && hit.transform.tag == "Enemy")
        {
            hit.rigidbody.AddForce(hit.rigidbody.transform.forward * weaponPush);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

如果你想让你的刚体被推离玩家,你将不得不使用player.transform.forward向量而不是刚刚的向量:

public void playerAttack()
{
    RaycastHit hit;
    if (Physics.Raycast(player.transform.position, player.transform.forward, out hit, range))
    {
        if (hit.rigidbody != null && hit.transform.tag == "Enemy")
        {
            hit.rigidbody.AddForce(player.transform.forward * weaponPush);
        }
    }    
}