当前位置: 首页 > ai >正文

学习游戏制作记录(改进剑投掷状态)7.28

 1.实现玩家瞄准状态的实时翻转

PlayerAimSwordState脚本:

    Vector2 mouseposition=Camera.main.ScreenToWorldPoint(Input.mousePosition);//鼠标位置

    if (_Player.transform.position.x < mouseposition.x && _Player.facingDir == -1)//位置检测
_Player.Flip();

    else if (_Player.transform.position.x > mouseposition.x && _Player.facingDir == 1)
_Player.Flip();
}//Update()中调用

2.实现进入接剑状态,并实现接剑的翻转和接住剑的冲击力

Player脚本:

public float SwordReturnImpact;//击退力

    public void CatchTheSword()//之前叫clearTheSword,改一下名字
{
stateMachine.ChangeState(CatchSword);//进入接剑状态
Destroy(sword);
}

在接剑动画的最后一帧上添加帧事件调用函数AnimationTrigger()

它会见TriggerCalled设置为True

PlayerCatchSwordState脚本:

public GameObject sword;//剑组件

    public override void Enter()
{
base.Enter();

        sword = _Player.sword;

        if (_Player.transform.position.x < sword.transform.position.x && _Player.facingDir == -1)//翻转
_Player.Flip();

        else if (_Player.transform.position.x > sword.transform.position.x && _Player.facingDir == 1)
_Player.Flip();

        rb.velocity = new Vector2(_Player.SwordReturnImpact * -_Player.facingDir, rb.velocity.y);//给玩家一个后退力
}

    public override void Update()
{
base.Update();

        if(TriggerCalled)//动画结束后进入待机状态
{
_PlayerStateMachine.ChangeState(_Player.idleState);
}
}

3.修复瞄准同时按下移动键的滑动和接剑时按移动会抵消冲击力的bug

在PlayerAimSwordState脚本和PlayerCatchSwordState脚本的Exit()中加上:


      _Player.StartCoroutine("BusyFor",.2f);//是玩家退出状态时进入0.2秒的忙碌状态,这状态下不能行走,关于这个协程,在我之前的文章里有出现

4.修复剑在即将碰到敌人或地面时按下返回键会行下掉的bug

Sword_Skill_Control脚本:

    public void ReturnSword()
{
rb.constraints = RigidbodyConstraints2D.FreezeAll;//锁定xyz即可
// rb.isKinematic=false;保持它为非运动学
transform.parent = null;

        isReturning = true;
}

剑在敌人后返回后会击中敌人,但我们目前还未添加剑的伤害函数

在OnTriggerEnter2D中添加

        if (isReturning)
{
return;
}

这样就直接返回,无任何影响

5.修复玩家奔跑时进入瞄准会滑动的bug

PlayerAimSwordState脚本:

_Player.SetZeroVelocity();//Update中调用设值速度为0

今天的内容比较少,希望大家可以把脚本代码进行一些整理。

http://www.xdnf.cn/news/16414.html

相关文章:

  • Leetcode_349.两个数组的交集
  • SPI通信协议
  • 分布式渲染效能探析:关键网络性能要素
  • 机器学习基础-matplotlib
  • linux系统----Ansible中的playbook简单应用
  • 计算机视觉---Halcon概览
  • 【算法训练营Day17】二叉树part7
  • 【学习路线】Android开发2025:从入门到高级架构师
  • linux命令grep的实际应用
  • MySQL 与 PostgreSQL 对比
  • Redis四种GetShell方式完整教程
  • 【WRF-Chem第二期】WRF-Chem有关 namelist 详解
  • 1.DRF 环境安装与配置
  • 零基础学习性能测试第九章:全链路追踪-系统中间件节点监控
  • LeetCode 刷题【18. 四数之和】
  • 计算机网络编程-Socket通信以及实战
  • 企业级JWT验证最佳方案:StringUtils.hasText()
  • 使用Ettus USRP X440对雷达和EW系统进行原型验证
  • 分布式IO选型指南:2025年分布式无线远程IO品牌及采集控制方案详解
  • Python动态规划:从基础到高阶优化的全面指南(2)
  • socketpair函数详解
  • Qt小组件 - 8 图片浏览器
  • go‑cdc‑chunkers:用 CDC 实现智能分块 强力去重
  • SpringBoot轻松集成豆包AI
  • 精简 RT-Thread 工程并查找占用空间大的模块
  • 中国汽车能源消耗量(2010-2024年)
  • java里List链式编程
  • 【智慧物联网平台】安装部署教程——仙盟创梦IDE
  • Jenkins流水线部署+webhook2.0
  • 四、计算机组成原理——第7章:输入/输出系统