Unity 进入区域敌人自动朝向玩家并作出攻击

进入区域敌人自动朝向玩家并做出攻击

敌人端代码

  private Animator animator;//声明一个动画
  private GameObject Player;//要看向的物体(玩家)
  public GameObject Prefab;//预制体(子弹)
  void Start()
  {
      animator = GetComponent<Animator>();//获取当前物体动画
      Player = GameObject.Find("PolyArtWizardStandardMat");//查找玩家
  }

  // Update is called once per frame
 
  void Update()
  {
 
  }
  //IK使用的方法
  private void OnAnimatorIK(int layerIndex)
  {
      if (Vector3.Distance(transform.position, Player.transform.position) <= 10)//判断玩家是否在身边,10为触发范围
      {
          animator.SetLookAtWeight(1);//设置头部权重
          animator.SetLookAtPosition(Player.transform.position);//使头部看向玩家
          transform.LookAt(Player.transform);//身体转向玩家
          animator.SetBool("Eattack", true);//触发施法动画
      }
      else {
          animator.SetBool("Eattack", false);//关闭施法动画
      }
      
  }
  void Eattck()//根据动画关键帧创建动作
  {
      GameObject Prefabs=Instantiate(Prefab, transform.position + transform.TransformVector(0, 1, 1), Quaternion.identity);//将子弹实例化

      Transform Prefabss = Prefabs.transform;
      Prefabs.transform.forward = transform.forward;//使预制体与当前物体朝向一致
      Prefabss.transform.SetParent(transform);//将预制体作为当前物体的子物体

  }

子弹飞行需将脚本挂载到子弹上,创建飞行速度和销毁机制,方向是由上边脚本控制的,保持与释放者方向一致。

   float timer = 0;
   void Start()
   {

   }

   void Update()
   {

      transform.Translate(Vector3.forward * 50f * Time.deltaTime);//向前方移动
       timer += Time.deltaTime;
       if (timer > 2)
       {
           Destroy(gameObject);//2秒后自动销毁
       }
   }
 

   public GameObject prefab;
   private void OnCollisionEnter(Collision collision)//监听发生碰撞
   {
       Instantiate(prefab, transform.position, Quaternion.identity);//碰撞是创建一个预制体

       if (collision.gameObject != null && collision.gameObject.tag != "Player")//通过标签判断碰撞物体是否为玩家
       {
          
          
           Destroy(gameObject);//销毁自身
       }
       if (collision.gameObject.tag == "Player")
       {
           Destroy(gameObject);//销毁自身
           Destroy(collision.gameObject);//销毁被碰撞物体
       }

这个脚本碰到玩家后将玩家销毁,真正应用时可以灵活使用,可以是子弹,火球,加血,减血,或者附加增益等各种效果。

注意的时需要将子弹作为敌人角色的子物体,不然会乱飞。

你可能感兴趣的:(unity,unity,游戏引擎,c#)