首页 > 其他分享 >3-5. 追击状态的转换

3-5. 追击状态的转换

时间:2024-02-25 15:34:41浏览次数:25  
标签:状态 转换 void localScale transform 追击 currentEnemy override public

添加野猪追逐状态

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

public class BoarChaseState : BaseState
{
    public override void OnEnter(Enemy enemy)
    {
        currentEnemy = enemy;
        // Debug.Log("Chase");
        currentEnemy.currentSpeed = currentEnemy.chaseSpeed;
        currentEnemy.lostTimeCounter = currentEnemy.lostTime;
        currentEnemy.anim.SetBool("run", true);
    }

    public override void LogicUpdate()
    {
        if (currentEnemy.lostTimeCounter <= 0)
        {
            currentEnemy.SwitchState(NPCState.Patrol);
        }

        if ((!currentEnemy.physicsCheck.isLeftGround) ||
            (!currentEnemy.physicsCheck.isRightGround) ||
            (currentEnemy.physicsCheck.touchLeftWall && currentEnemy.faceDir.x < 0) ||
            (currentEnemy.physicsCheck.touchRightWall && currentEnemy.faceDir.x > 0))
        {
            // 追逐状态立马转身
            currentEnemy.transform.localScale = new Vector3(-1 * currentEnemy.transform.localScale.x, currentEnemy.transform.localScale.y, currentEnemy.transform.localScale.z);
        }
    }

    public override void PhysicsUpdate()
    {

    }

    public override void OnExit()
    {
        currentEnemy.anim.SetBool("run", false);
    }
}

发现玩家的时候立马进入追逐状态

FoundPlayer 的原理是向前投射一个 Box,期间撞到 Player 的话就会返回 true

另外当玩家离开野猪视野范围的时候,需要让野猪在一段时间后恢复巡逻状态

项目相关代码

代码仓库:https://gitee.com/nbda1121440/2DAdventure.git

标签:20240225_1441

标签:状态,转换,void,localScale,transform,追击,currentEnemy,override,public
From: https://www.cnblogs.com/hellozjf/p/18032458

相关文章

  • 3-4. 有限状态机&抽象类多态
    创建有限状态机基类实现有限状态机野猪巡逻状态继承BaseState,将原来Enemy的Update里面的一部分移动到LogicUpdate里面使用有限状态机定义状态定义巡逻状态、追逐状态、当前状态Enable进入巡逻状态Disable退出当前状态Update调用状态机的逻辑更新Awake......
  • 关闭Windows网络连接状态指示器的活动测试 注册表 REG
    REG文件来关闭Windows网络连接状态指示器的活动测试:CopyCodeWindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet]"EnableActiveProbing"=dword:00000000该文件将向注册表添加一个名为"EnableActivePr......
  • 【办公自动化】批量将Markdown文件转换为纯文本文件
    本文介绍如何将Markdown文件转换为纯文本文件。Markdown是一种轻量级的标记语言,用于编写格式简单的文档。但是,有时候我们需要将Markdown文件转换为纯文本文件,以便进行其他处理或直接在浏览器中查看。下面介绍一种简单的方法来实现这个功能。转成html要将Markdown文件转换为......
  • 编译器负责转换源代码
    能够把C语言等高级编程语言编写的源代码转换成本地代码的程序称为编译器。每个编写源代码的编程语言都需要其专用的编译器。将C语言编写的源代码转换成本地代码的编译器称为C编译器。编译器首先读人代码的内容,然后再把源代码转换成本地代码。编译器中就好像有一个源代码同本地......
  • 类型转换
    publicclassDemo02{publicstaticvoidmain(String[]args){inti=128;byteb=(byte)i;//强制类型转换(类型)变量名高->低//自动转换低->高System.out.println(i);System.out.println(b);//内存溢出/*注意点1.不能将布尔值进行转换2.不能将对象类型转为不......
  • Java基础05:类型转换
    类型转换1.由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换低------------------------------------------------->高byte,short,char--->int--->long--->float--->double强制转换:由高类型转换到低类型  自动......
  • 什么是转换矩阵以及如何使用它
    项目地址:Pdfium.Net:https://github.com/1000374/Pdfium.NetPdfiumViewer:https://github.com/1000374/PdfiumViewer当您使用PDFium库处理PDF文件中的对象时,您可以使用SetMatrix函数以各种方式转换对象(通常是图像,但也包括任何其他嵌入对象)。使用变换矩阵,您可以旋转、平移(移......
  • 状态机模式的初步了解及学习心得体会
    这种模式,解决的是,程序在不同状态切换及增加新的状态时,需要改很多代码的问题。它能用简单的逻辑控制程序从一个状态切换为其他被允许的状态,我昨天在网上看的一个例子,一个播放器,有播放,暂停,关闭的状态。处于关闭状态时,只能响应播放的代码;处于暂停状态时,能响应关闭和播放代码;处于播放......
  • C# 的显示转换 *.Parse(string) Convert.ToInt32(double value)
    //显式转换(类型)///(int)表示使用强制的显示转换,是一种类型转换,C#默认的整形是int32,///因此使用此方法转成int32不遵循四舍五入,直截取整数部分///(int)5.12结果是5///Int.Parse()指把string类型转换int......
  • delphi Byte 与 AnsiChar、WideChar 相互转换
    Byte与AnsiChar、WideChar相互转换代码Byte转AnsiChar、WideCharprocedureTForm1.Button1Click(Sender:TObject);varac:AnsiChar;wc:WideChar;bys:TBytes;begin//ANSI编码ac:='a';bys:=BytesOf(ac);Memo1.Lines.Add(bys[0].ToString);......