Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在团结方面有困难_C#_Unity3d - Fatal编程技术网

C# 在团结方面有困难

C# 在团结方面有困难,c#,unity3d,C#,Unity3d,每当玩家击中敌人时,触发该功能,敌人必须遭受击退,但当这种情况发生时,在击退后,如果敌人靠近玩家,即使没有受到击退,也会再次遭受击退,这是不应该发生的 下面是触发冲突脚本 public void OnTriggerEnter(Collider hit){ if(hit.gameObject.tag == "npcSamuraiNormal"){ hit.rigidbody.AddForce(transform.forward * speed, ForceMode.Impu

每当玩家击中敌人时,触发该功能,敌人必须遭受击退,但当这种情况发生时,在击退后,如果敌人靠近玩家,即使没有受到击退,也会再次遭受击退,这是不应该发生的

下面是触发冲突脚本

public void OnTriggerEnter(Collider hit){
    if(hit.gameObject.tag == "npcSamuraiNormal"){
        hit.rigidbody.AddForce(transform.forward * speed, ForceMode.Impulse);
    }
}
这是敌人的FSM状态

private void ChasePlayerState(){

    if(dir.magnitude < 1.5f)
    {
        state = FSMStates.AttackPlayer;
        return;

    } else if(dir.magnitude >= 10){
        state = FSMStates.SelectHouse;
    return;
    } else if(enemyHealth <= 0){
        state = FSMStates.Death;
        return;
    }

    /*if(dir.magnitude > 15){
        state = FSMStates.Waypoint;
        return;
    } else if (dir.magnitude < 5){
        rigidbody.velocity = Vector3.zero;
        state = FSMStates.Shoot;
        return;
    }else if (enemyHealth <= 0){
        state = FSMStates.Death;
        return;
    } */

    transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), rotSpeed * Time.deltaTime);

    transform.eulerAngles = new Vector3 (0, transform.eulerAngles.y, 0);

    rigidbody.MovePosition(transform.position + transform.forward * speed * Time.deltaTime);

    }

提前感谢

你发布了你的代码,这很好,但是如果你粘贴了实际的代码,而不是它的图像,那就更好了——这使得人们更容易编辑或复制到他们的机器上。OnTiggerEnter基本上是运行在NPCSamuranormal=>向NPCSamuranormal添加强制,而不涉及其他逻辑。如果你只想在攻击时击退,你需要在攻击函数中处理它。当触发器与某物碰撞时,物理引擎调用OnTriggerEnter。