首页 > 其他分享 >2025.1.15日志

2025.1.15日志

时间:2025-01-14 22:01:15浏览次数:3  
标签:动画 2025.1 context controls Exit 过渡 Time 15 日志

2025.1.14


1.实现了人物的待机,走路,跑步的动画以及其代码逻辑实现。
其中,(待机/走路),(跑步)在动画机BlendTree中的参数用yVelocity,xVelocity表示,
    private void AnimatorController()
    {
        float yVelocity = Vector3.Dot(moveDir.normalized, transform.forward);  //因为人物会转向并且人物是依据世界坐标进行移动,所以要将动画参数设置为相对坐标对应的值
        float xVelocity = Vector3.Dot(moveDir.normalized, transform.right);  //Dot是将两个向量相乘得到一个值,normalized可以进行归一化,且不改变moveDir的值,而 Normalized 会改变其值
        animator.SetFloat("xVelocity", xVelocity, 0.1f, Time.deltaTime);
        animator.SetFloat("yVelocity", yVelocity, 0.1f, Time.deltaTime);

        bool playRunAnimation = isRun && moveDir.magnitude > 0f;  //因为Run的动画树没有设置idle,所以在不动时按跑步键会播放跑步动画,这是需要判断 moveDir.magnitude > 0f 才能进入Run 的动画树
        animator.SetBool("isRun", playRunAnimation);
    }


2.在InputSystem的基础上建立输入方法,实现了移动,瞄准,跑步的输入
    private void AssignInputSystem()
    {
        controls.Enable(); (后面会改为 controls = player.controls;)

        controls.Character.Movement.performed += context => moveInput = context.ReadValue<Vector2>();
        controls.Character.Movement.canceled += context => moveInput = Vector2.zero;

        controls.Character.Aim.performed += context => aimInput = context.ReadValue<Vector2>();
        controls.Character.Aim.canceled += context => aimInput = Vector2.zero;

        controls.Character.Run.performed += context =>
        {
            isRun = true;
            speed = runSpeed;

        };
        controls.Character.Run.canceled += context =>
        {
            isRun = false;
            speed = walkSpeed;
        };

3.把动画过渡的设置理了一遍:
Has Exit Time    Exit Time 是一种不依赖参数的特殊过渡。但是,它依赖状态的标准化时间。选中此选项可在 Exit Time 指定的具体时间进行过渡。

Exit Time
如果选中 Has Exit Time__,此值表示过渡可以生效的确切时间。该时间以标准化时间表示(例如,退出时间为 0.75 表示,在已播放 75% 动画的第一帧上,__Exit Time 条件为 true)。在下一帧上,该条件为 false。对于循环动画,每个循环都会评估退出时间小于 1 的过渡,因此可使用此选项在每个循环的动画中以适当时机对过渡进行计时。对 Exit Time 大于 1 的过渡仅评估一次,因此此类过渡可用于在固定循环次数后的特定时间退出。例如,过渡的退出时间为 3.5 的情况下,在三个半循环后对该过渡评估一次。

Fixed Duration
如果选中 Fixed Duration 复选框,则以秒为单位解读过渡时间。如果未选中 Fixed Duration 复选框,则过渡时间解读为源状态的标准化时间的一部分。

Transition Duration
相对于当前状态持续时间的过渡持续时间,以标准化时间或秒为单位(具体取决于 Fixed Duration 模式)。此时间在过渡图中显示为两个蓝色标记之间的部分。

Transition Offset
过渡到的目标状态的起始播放的时间偏移。例如,值为 0.5 表示目标状态在其时间轴的 50% 处开始播放。

Interruption Source
此选项用于控制该过渡可能中断的情况(请参阅下文的过渡中断)。

Ordered Interruption
确定当前过渡是否可在不考虑顺序的情况下被其他过渡中断(请参阅下文的过渡中断)。

Conditions
一个过渡可以具有单个条件、多个条件或根本没有条件。如果过渡没有条件,Unity Editor 只会考虑 Exit Time__,并在达到退出时间时发生过渡。如果过渡有一个或多个条件,则必须满足所有条件才能触发过渡。
一个条件包含:
- 一个事件参数(在条件中考虑其值)。
- 条件谓词(需要时填写,例如,浮点数的“小于”或“大于”)。
- 一个参数值(需要时填写)。
如果为该过渡选择 Has Exit Time__ 并有一个或多个条件,请注意 Unity Editor 在 Exit Time 之后考虑条件是否为 true。这样可确保在动画的特定部分中进行过渡。


4.增加了武器系统
    新建一个Player脚本,其是所有人物控制脚本的核心,所以的有关人物的控制都能通过Player脚本实现交互。将基于InputSystem控制输入的PlayerControls controls建立在此,其他脚本只需将它们自身的controls 赋值为 player里的controls 即可 (注意,因为Player里controls是在OnEnable里controls.Enable()的,所以AssignInputSystem()要在其之后的Start里赋值).
    新建WeaponVisualController脚本,用来实现武器切换,本质上就是将所有武器聚集在角色手上,然后将所有枪的active设置为false,通过按对应键将武器设为true。

5.增加了射击系统
    增加射击动画,新建一层AnimatorLayer为射击层,将权重拉为1。并且新建一个AvatarMask,将其下半身全取消,并把它设置为射击层的Mask。
    下载Animation Rigging,之后用它的muti-Aim Constraint来完成角色和枪的抬头低头。用Two Bone IK Constraint 来修正左手的位置,以配合武器的模型。
    将脚本当做标签来使用,将标签所在物体的transform值赋予IK,来修改左手的位置
    private void AttachLeftHand()
    {
        //获取标签所在物体的transform,并且其刚好是 gunTransfroms 的孩子
        Transform trasformTarget = currentGun.GetComponentInChildren<LeftHandTargetTransform>().transform;

        leftHand.localPosition = trasformTarget.localPosition;
        leftHand.localRotation = trasformTarget.localRotation;

    }

标签:动画,2025.1,context,controls,Exit,过渡,Time,15,日志
From: https://blog.csdn.net/ababla/article/details/145148550

相关文章

  • 15三数之和
    自己的思路是将解的情况分类:只有三种情况(正,0,负),(正,正,负),(负,负,正)。将nums分为两个数组pos,保存正数;neg,保存负数。当两个数组的长度小于nums的长度时说明存在0,这个时候利用哈希的方法可以找到第一种情况的所有解;对于第二种情况,构建set:possum,保存两个不同正数的和,然后利用哈希的方法去......
  • 12.15
    1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3。3.实验步骤1.熟悉常用的Linux操作1)cd命令:......
  • 2025.1.12——1200
    2025.1.12——1200Q1.1200Youaregivenasequence\(a\),consistingof\(n\)integers,wherethe\(i\)-thelementofthesequenceisequalto\(a_i\).Youarealsogiventwointegers\(x\)and\(y\)(\(x\ley\)).Apairofintegers\((i,......
  • 高性能、零内存分配的Go日志库--Zerolog
    简介Zerolog是一个高性能、零内存分配的Go日志库。它为不需要垃圾回收的延迟敏感型应用程序提供结构化日志记录功能。您可以以完全零分配的方式使用,这样在初始化记录器对象后,堆上不会再分配其他对象,从而防止触发垃圾回收。Zerolog包提供了一个专用于JSON输出的快速而简......
  • 2025.1.5——1200
    2025.1.5——1200Q1.1200Kevindiscoveredabinarystring$s$thatstartswith1intheriveratMoonlitRiverParkandhandeditovertoyou.Yourtaskistoselecttwonon-emptysubstrings$^{\text{∗}}$of$s$(whichcanbeoverlapped)tomaximizetheX......
  • syslog转存nginx日志的简单配法
    命令单独启动一个独立的rsyslog进程rsyslogd-i/root/tong1/rsyslogd/pid-f/root/tong1/rsyslogd/rsyslogd.conf 配置文件module(load="imuxsock")input(type="imuxsock"Socket="/root/tong1/rsyslogd/error"CreatePath="on")input(typ......
  • VP Educational Codeforces Round 159 (Rated for Div. 2)
    A.BinaryImbalance题意:给你一个01串,每次选一个01或者一个10在他们中间插一个0进去,问能不能让0的个数大于1。我们进行一次插入操作后,显然还可以继续操作,所以只要有0和1就一定可以。注意特判全0的情况。点击查看代码voidsolve(){ intn; std::cin>>n; std::s......
  • 达梦sqllog慢日志配置方案,抓取用户所有的操作记录
    很多用户反馈,开启审计影响数据库性能,但是不开启审计,数据库没保障,数据无安全性,误删了数据,无法找到记录达梦慢日志可以配置下,记录用户的操作记录 mkdir-p /data/dmlog/logvi/data/dmdb/sqllog.iniBUF_TOTAL_SIZE=10240  #SQL日志buffer占用空间的上限,单位为KB,取值......
  • 如何清理 Windows 服务器网站访问日志文件
    网站访问日志文件记录了所有访客的访问行为,包括成功请求和错误信息。长期不清理这些日志文件会导致系统盘可用容量逐渐减少,最终可能影响服务器性能。因此,定期清理日志文件是维护服务器健康的重要步骤之一。清理步骤:确定日志文件位置:WindowsIIS7.0及以上版本的日志文件通常......
  • 15个Linux Grep命令使用实例(实用、常用)
    Grep命令主要用于从文件中查找指定的字符串。首先建一个demo_file:复制代码代码如下:$catdemo_fileTHISLINEISTHE1STUPPERCASELINEINTHISFILE.thislineisthe1stlowercaselineinthisfile.ThisLineHasAllItsFirstCharacterOfTheWordWithUpper......