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

制作游戏demo的心得

制作这个游戏demo出来的心得
https://www.bilibili.com/video/BV1cF411m7Dh/
制作游戏demo的心得

制作游戏demo,主要是为了表现自己的技术,那就一门心思想着如何提高表现力就行了,在整体的画面渲染风格方面或许没有什么可选择的,市面上资料最多最成熟的只有卡通渲染,shader自己写要写的东西太多,不如不写,写了也没别人的好看,用什么模型就用什么模型的shader,地面不要旋转,用最普通的plane,材质选择网格线的贴图平铺即可,采样改成平铺,缩放改成60,这样就可以把plane大小缩放改成60然后看到一个一个的网格地面,unity的官方shader里面就有支持这种效果的,对于角色的动作,他提供动作案例的时候动画里面带了位移案例使用了rootmotion,那你就用rootmotion,没有位移才考虑自己使用刚体做位移,用刚体而不是直接修改transform的原因是为什么防止在播动画的时候穿墙,所以,假设有一个翻滚动画,如果这个翻滚非常特殊,就是一个向后滚,那就不自己修改旋转,直接使用动画旋转,如果是通用的向前翻滚动作,翻滚前记录好想要roll的direction,然后在播动作的同时以rotspeed插值到这个方向即可,为了防止穿墙,可以考虑使用animator的deltaposition/time.deltatime求出瞬时速度赋值给刚体的velocity,利用刚体来移动,roll结束后关闭刚体的位移功能,主角去推这个怪,主角刚体是开着的,主角有反作用力,主角和怪不会重叠,怪平时与障碍物怪之间利用agent功能避障,寻常怪的导航寻路,直接使用unity的navigation即可,怪在游戏过程中会使用到animator,agent,刚体,刚体是为了特殊动作时候的防止穿墙行为,在移动中,把agent的接下来想要移动的希望速度转化为怪自身坐标系下的水平运动参数和向前运动参数可以传进animator里面,然后animator使用这两个参数在混合树里面混合出对应的移动动作,还是使用rootmotion的移动在onanimatormove里面求出动画速度又赋予修改给agent就是agent和animator的协同,如果agent在执行翻滚的时候超出了烘焙区域?非onnavmesh关agent,不更新agent位置,时刻采样网格中当前位置的最近网格点,采样到了开agent,判断采样的位置点与自己下一个要移动的位置点是不是很近,很近开更新位置直接使用agent移动,没有很近先不开agent的位置更新,否则没采样到使用刚体移动目标是target,采样到非更新位置情况使用动画移动目标(防止使用agent瞬移),目标就是nextposition,有agent计算的dir已经考虑过了避障不需要刚体了
agent的offmeshlink unity有个官方脚本可以帮助自定义穿越link的时候的一些行为,例如用曲线插值模拟跳跃运动
对于一些分层的运动使用分层动画遮罩就行了,boss理应有远程的射击方式,射击方式有平射,散射,抛物线运动等,基本的弩箭就平射,抛物线运动通过设定初始速度,求出水平分量和垂直分量,每帧更新位置直到接近地板就行了,如果是手机上的游戏拖动ui选择目标位置的投射,需要先根据ui上相对中心的相对ui位置转化为主角空间下的世界坐标,根据世界的目标位置,在根据实际逻辑决定发射方向和大小,平射运动,刚体增加一个impluse的力就行了,由于平射运动的子弹速度可能非常快,可以利用update的射线检测来判断是否碰到障碍物,ontriggerenter这些都是都是在物理循环中根据fixedupdatetime来进行更新,而fixedupdate可能比update大,而且fixedupdate也是在update下的模拟调用,怪的翻滚,受击的时候在决定是否翻滚翻滚成功后不扣伤害即可,怪的受伤flash,修改材质的自发光属性开启hdr强度设置的很高再配合后处理的bloom效果即可实现,击中后的顿帧修改animation参数speed即可,受击动作可以做4个方向根据受击时候攻击者在受击者坐标空间下的forward向量的角度差可判断是在前方还是左右还是背后以此作为动画参数来决定播什么,这些都是向量空间转换以及一些基本的向量运算问题,启用ik解决一些双手武器时候左手的跟随问题,同时为了避免一切到双手武器左手直接瞬移到target位置,而且一开始就ik手会走一个不正确的骨骼运动,在武器快到左手位置的时候再开启ik插值混合就行了,角色被攻击到应该有受击动作的反馈,如果是霸体,那也要模型抖动的反馈,模型抖动,直接去找现有的效果,角色武器攻击到墙壁会触发一个反弹的效果,此时播个recoil的动画动作即可,反弹的效果应该在一定的角度内才有,碰撞体与forward向量的角度差小于70度才播反弹动作,否则只出发一个攻击特效之类的,怪的cansee状态,先fov椎体模型后判断y的夹角,fov判断也是向量转夹角判断,主角的索敌follow主角,lookat目标,用cinemachine即可,主角输入移动,输入空间坐标转跟随相机空间的坐标求出旋转的方向旋转主角,移动就是向前乘以移动速度,而角色处于strafe状态的时候,由于此时旋转是依赖目标的,而转换坐标后的inputdir把x和z参数传到动画控制器里面即可,free和strafe是两个locomotion,对于怪物的冲刺攻击,一个动画根据时长和相对距离设置刚体速度,击飞击倒都是两个动画,一个被击倒,一个getup,击飞也是刚体设置速度
对于技能当中的位移相关,能用动画位移的就直接使用动画位移RootMotion,遵循美术的想法,实在没动画位移的考虑刚体。
受击有的也用布娃娃,但应该没必要太耗

分层动画,ik,导航网格寻路,刚体运动

相关文章:

制作游戏demo的心得

制作这个游戏demo出来的心得 https://www.bilibili.com/video/BV1cF411m7Dh/ 制作游戏demo的心得 制作游戏demo,主要是为了表现自己的技术,那就一门心思想着如何提高表现力就行了,在整体的画面渲染风格方面或许没有什么可选择的,…...

Web Tour Server窗口闪现

1.打开该文件所在位置 2.右击选择编辑,在最后一行加上pause,保存后重新打开Server窗口 3.重新打开后,若出现以下情况: 以管理员身份打开cmd命令行,输入命令netstat -aon|findstr “1080”,查看1080端口占用…...

Linux下的基本指令

目录 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令(重要): 06.rmdir指令 && rm 指令(重要): 07.man指令(重要): 08mv指令&#xff…...

随机数生成器代码HTML5

代码如下 <!DOCTYPE html> <html> <head> <title>随机数生成器</title> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <style> body { text-align: center; bac…...

正确理解redux Toolkits中createSlice的action.payload

使用redux Toolkits中的createSlice编写extraReducers经常看到使用action.payload来更新state状态值&#xff1a; 那么action.payload指的到底是什么&#xff1f; 让我们看看action的定义部分&#xff1a; 注意&#xff1a; action.payload不是上面ajax请求的返回内容&#x…...

YOLOv8快速复现 官网版本 ultralytics

YOLOV8环境安装教程.&#xff1a;https://www.bilibili.com/video/BV1dG4y1c7dH/ YOLOV8保姆级教学视频:https://www.bilibili.com/video/BV1qd4y1L7aX/ b站视频&#xff1a;https://www.bilibili.com/video/BV12p4y1c7UY/ 1 平台搭建YOLOv8 平台&#xff1a;https://www.a…...

Haproxy搭建 Web 群集实现负载均衡

目录 1 Haproxy 1.1 HAProxy的主要特性 1.2 HAProxy负载均衡策略 1.3 LVS、Nginx、HAproxy的区别 2 Haproxy搭建 Web 群集 2.1 haproxy 服务器部署 2.1.1 关闭防火墙 2.1.2 内核配置&#xff08;实验环境可有可无&#xff09; ​2.1.3 安装 Haproxy 2.1.4 Haproxy服务…...

Tessy 5.0.4

Tessy 5.0.4 Linux 2692407267qq.com&#xff0c;更多内容请见http://user.qzone.qq.com/2692407267/...

mybatis-plus根据指定条件批量更新

1.service实现类中 比如我这里只针对UserEntity&#xff0c;在UserServiceImpl下&#xff08;该实现类是继承了mybatis-plus的ServiceImpl的&#xff09;新增如下代码&#xff1a; public boolean updateBatchByQueryWrapper(Collection<UserEntity> entityList, Funct…...

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录 摘要一、汽车零部件测试的重要性&#xff1f;二、虹科的测试仿真工具如何在汽车零部件测试展露头角&#xff1f;三、应用场景**应用场景1&#xff1a;方向盘开关的功能测试****应用场景2&#xff1a;各类型电机的控制测试****应用场景3&#xff1a;RGB氛围灯的功能测试…...

[solidity]合约调用合约

先写一个简单的合约将其部署&#xff0c;部署后的合约地址为&#xff1a;0xd9145CCE52D386f254917e481eB44e9943F39138 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract A{string myname;function setName(string memory _name) public{myname_name;}functi…...

Vulnhub系列靶机---JANGOW 1.0.1

文章目录 网卡配置信息收集主机发现端口扫描 漏洞利用反弹Shell提权 靶机文档&#xff1a;JANGOW 1.0.1 下载地址&#xff1a;Download (Mirror) 难易程度&#xff1a;. 网卡配置 水果味儿 信息收集 主机发现 端口扫描 访问80端口 点击site目录 点击页面上方的一个选项&…...

肖sir__项目环境之全流程__005

一、测试流程&#xff08;h模型&#xff09; 1、需求文档&#xff08;产品&#xff09; 需求文档&#xff08;软件需求规格说明书srs&#xff09; &#xff08;1&#xff09;如何分析需求 a、显示需求&#xff08;主流程、功能&#xff0c;业务&#xff09; b、隐性需求&#x…...

搜狗输入法下键翻页

搜狗输入法下键翻页 从官网下载 搜狗输入法智慧版关闭超级候选关闭候选...

C#多线程

一、多线程实现方式 1. 使⽤Thread类&#xff1a; System.Threading.Thread 类是C#中最基本的多线程编程⼯具。 2. 使⽤ThreadPool&#xff1a; 线程池是⼀个管理和重⽤线程的机制&#xff0c;它可以在应⽤程序中创建和使 ⽤多个线程&#xff0c;⽽⽆需显式地管理线程的…...

Unity 编辑器常用方法

unity编辑器开发 脚本注解1. RuntimeInitializeOnLoadMethod2. ColorUsage3. Header4. SerializeField5. HideInInspector6. Space7. Range8. Multiline9.[RequireComponent(typeof())]10.HelpURL 右键菜单注解1. CreateAssetMenu - 针对ScriptableObject 菜单栏注解1. MenuIt…...

21 mysql ref 查询

前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…...

启山智软/一款包含主流商城类型的一款电商中台系统100%开源

文章目录 介绍一、Smart Shop JAVA 微服务电商中台优势二、电商中台包含那些主流商城模式1.S2B2C供应链商城2.B2B2C多商户商城3.B2C单商户商城4.O2O外卖配送商城5.社区团购商城 6.演示地址总结 介绍 想要了解代码规范&#xff0c;学习商城解决方案&#xff0c;点击下方官网链接…...

【C语言】指针的进阶(四)—— 企业笔试题解析

笔试题1&#xff1a; int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】在x86环境下运行 【解析】 &a是取出整个数组的地址&#xff0c;&a就表示整个数组&#xff0c;因此…...

博弈论——连续产量古诺模型

连续产量古诺模型 连续产量古诺模型是博弈论中非常经典的模型&#xff0c;以两厂商连续产量古诺博弈为例&#xff1a; 1、模型建立 Player&#xff1a;两个供应相同产品的厂商 产量&#xff1a;厂商1的产量为q1&#xff0c;厂商2的产量为q2&#xff0c;市场总供给为Qq1q2。…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...