Unity----怪物的简单ai

本文介绍了在Unity3d中为即时战斗系统设计的简单怪物AI,包括增加攻击间隔、设置怪物注视时间后主动追击以及调整追击模式下的移动逻辑。后续计划改进怪物警戒状态的触发条件,例如考虑加入潜行系统的交互。
摘要由CSDN通过智能技术生成

参考博文
https://blog.csdn.net/c252270036/article/details/77414141

因为做的是即时战斗,故在原博文的基础上进行了些修改
1.原博文中,怪物的攻击方式是切换场景,这里添加了攻击间隔。
2.添加了注视时间,当进入警戒状态并维持一定时间后,怪物会主动发起追击。
3.修改了追击模式下的移动判断。

效果如下
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MonsterAI : MonoBehaviour
{
   
    public GameObject playerUnit;
    public ActorController ac;
    public Animator anim;
    private Vector3 initialPosition;

    public float wanderRadius;
    public float alertRadius;
    public float defendRadius;
    public float chaseRadius;

    public float attackRange;
    public float walkSpeed;
    public float runSpeed;
    public float turnSpeed;

    private enum MonsterState
    {
   
        STAND,
        CHECK,
        WALK,
        WARN,
        CHASE,
        RETURN
    }

    private MonsterState currentState = MonsterState.STAND;

    public float[] actionWeight = {
    3000, 3000, 4000 };
    public float actRestTime;
    public float atkRestTime;  //攻击间隔
    public float warnRestTime;  //注视时间,当进入警戒状态并维持一定时间后,怪物会主动发起追击。
    private float lastActTime;
    private float lastAtkTime;

    private float distanceToPlayer;
    private float distanceToInitial;
    private Quaternion targetRotation;

    private bool is_warned = false;
    private bool is_Running = false;

    void Start()
    {
   
        playerUnit = GameObject.FindGameObjectWithTag("Player");
        ac = GetComponent<ActorController>();
        anim = ac.model.GetComponent<Animator>(
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Unity中,怪物状态机是用来控制怪物行为和状态转换的一种机制。根据引用\[1\]中的代码示例,可以看出在游戏中的角色类Character中,使用状态机来管理角色的状态。状态机的关键在于控制状态的切换,通过调用TransitionState方法来实现状态的切换。在游戏中,可以根据需要定义不同的状态,比如追逐玩家状态、停止追逐状态等。根据引用\[3\]中的描述,可以使用模糊状态机来实现怪物的追逐行为。当玩家离怪物比较近时,怪物进入追逐状态,当玩家离怪物比较远时,怪物停止追逐并返回出生点。具体实现可以根据游戏需求来设计和编写相应的代码逻辑。 #### 引用[.reference_title] - *1* [GameFrameWork框架(Unity3D)使用笔记(七)游戏主流程ProcedureMain——虽然游戏本来没有怪物但是为了使用...](https://blog.csdn.net/HowToPause/article/details/128048168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [在Unity中实现有限状态机](https://blog.csdn.net/nick1992111/article/details/129234818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [unity有限状态机和模糊状态机(怪物AI、自动寻路)](https://blog.csdn.net/lxy20011125/article/details/130318794)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值