C# 扳机击退敌人

C# 扳机击退敌人,c#,unity3d,C#,Unity3d,我有两个游戏对象,一个是我的“英雄”,另一个是带导航网的敌人,我已经设法使卫生系统没有问题,但我知道当剑与敌人相撞时,僵硬的身体似乎不起作用,因为我尝试了一些在互联网上找到的解决方案,但似乎没有任何效果。我希望一旦剑与敌人相撞,敌人就会被推倒。我试过这个: public void takeDamage() { // revert rigidbody velocity: rigidbody.velocity *= -1; } 另一个代码 float distance = 25.0f;

我有两个游戏对象,一个是我的“英雄”,另一个是带导航网的敌人,我已经设法使卫生系统没有问题,但我知道当剑与敌人相撞时,僵硬的身体似乎不起作用,因为我尝试了一些在互联网上找到的解决方案,但似乎没有任何效果。我希望一旦剑与敌人相撞,敌人就会被推倒。我试过这个:

public void takeDamage() { 
  // revert rigidbody velocity:
  rigidbody.velocity *= -1;
}
另一个代码

float distance = 25.0f;
                if (player.position.x < enemyPosition.position.x) {
                    Vector3 new_position = new Vector3 (distance, enemyPosition.position.y, enemyPosition.position.z);
                    rb.position = new_position;
                }
测试一下

   void OnCollisionEnter(Collision collision) {
        if (collision.relativeVelocity.magnitude > 1)
            rb.velocity = new Vector3(0, 10, 0);
    }

当您实现这些示例时,会发生什么情况?没有,健康变量会按应有的方式减少,但没有其他情况发生在您的
Update()
方法中,敌人正在将其速度设置回原来的速度?是的,来自NavMesh的SetDestination方法。但是当物体与剑相撞时,它甚至都不动。你是怎么得到你的刚体的?使用
GetComponent
?您是否尝试将该值设置得非常高?比如10000左右,以确保它有什么作用?没有,我得到相同的结果。可能意味着网格或碰撞网格的设置有问题。试着做一个两盒的,并测试这段代码。
   void OnCollisionEnter(Collision collision) {
        if (collision.relativeVelocity.magnitude > 1)
            rb.velocity = new Vector3(0, 10, 0);
    }