当前位置: 代码迷 >> 综合 >> BOSS的AI(自动寻路和自动攻击)
  详细解决方案

BOSS的AI(自动寻路和自动攻击)

热度:64   发布时间:2023-09-30 09:17:05.0
CharacterController控制移动
?SimpleMove(Vector3)移动
根据和角色的位置和距离,判断是否进行攻击,攻击的时候利用随机数来随机发起攻击 Attack1 Attack2

using UnityEngine;
using System.Collections;public class SoulBoss : MonoBehaviour {private Transform player;private CharacterController cc;private Animator animator;public float attackDistance = 3;//这个是攻击距离,也是寻路的目标距离public float speed = 2;public float attackTime = 3;private float attackTimer = 0;void Start() {player = GameObject.FindGameObjectWithTag(Tags.player).transform;cc = this.GetComponent<CharacterController>();animator = this.GetComponent<Animator>();attackTimer = attackTime;}// Update is called once per framevoid Update () {Vector3 targetPos = player.position;targetPos.y = transform.position.y;transform.LookAt(targetPos);float distance = Vector3.Distance(targetPos, transform.position);if (distance <= attackDistance) {//在攻击距离之内attackTimer += Time.deltaTime;if (attackTimer > attackTime) {//达到计时的攻击时间int num = Random.Range(0, 2);if (num == 0) {animator.SetTrigger("Attack1");} else {animator.SetTrigger("Attack2");}attackTimer = 0;} else {animator.SetBool("Walk", false);}} else {//进行跟踪 跑向目标attackTimer = attackTime;if (animator.GetCurrentAnimatorStateInfo(0).IsName("BossRun01")) {cc.SimpleMove(transform.forward * speed);}animator.SetBool("Walk", true);}}
}