UE5-蓝图基础(上)
...
Unity3D-飞行与射击
飞行和射击冻结旋转物体的Rigidbody组件可以给物体增加物理属性。当我们增加Rigidbody组件后,给物体一个力,就会发现物体会进行一定的运动,而且会螺旋升天。这时我们就需要在Constraints的下拉列表中冻结掉物体的旋转, 增加弹簧在我们的角色中添加一个Configurable Joint组件。并且修改Y方向的弹簧效果及修改Y Drive。第一个属性:Position Spring:弹簧的扭矩。这边可以简单理解为和弹簧的弹力成正比。 给第一个属性赋值。这时当我们向上拖动我们的角色的时候,就会发现我们的角色进行着简谐运动。而且可能会出现穿模,还有穿到地板下面卡住。这是因为,在unity中,当物体的移动速度过快,就会造成穿模现象。当我们的角色穿过地板之后,再往回穿时,可能速度变慢,结果就被迫当了土行孙。那么怎么解决这个问题呢?那就要限制我们角色向下的最大作用力。这时就需要Y Drive中的第三个属性:Maimum...
Unity3D-同一个局域网联机
同一个局域网内联机联机如何实现?服务器判断: 玩家 a 移动,在其他玩家眼里也会动。一般通过一个中心服务器 Server 实现,首先玩家 a 的客户端 clientA 向 Server发送控制移动的输入,Server 判断玩家 a 能否移动,Server 判断完毕后,将结果发送给 ClientA 和 ClientB 等其他客户端。客户端接收到消息后再渲染出动画。问题就是有网络延迟。 客户端判断: 玩家 a 移动,在自己的客户端中判断是否能移动,然后将移动的消息传给 Server,但是 Server 不需要传回 ClinetA。然后 Server 更新自己的信息,再同步发送到 ClientB 等其他客户端。问题就是客户端可以发送 Server 虚假的信息,也就是外挂。 同步多个客户端描述的同一个游戏场景,再 clinetA 中玩家 a,b,c 的坐标和 ClinetB 中 a,b,c 的坐标应该是一致的,由于有网络延迟的存在,不可能完全一致。 例如由于网络延迟的原因会造成玩家不同的运动轨迹 权衡利弊后根据某个玩家的状态去同步其他玩家 实现在 unity...
Unity3D-项目创建和角色移动
创建项目打开 unity hub,点击新项目,选择 3d 模板 创建完毕后是这样 unity 资源商店可以使用别人做好的素材,AssetStore 找到想要的素材,点击在 unity 中打开,此时编辑器会弹出一个 Package Manager。点击 download 下载,下载好之后可以 import 导入,选择需要的资源导入即可。导入完毕在 Assets 会多一些文件夹 这里导入一个Prototyping Pack (Free) 添加素材在刚刚的资源中,选择一个扁平地形,这里选的是 PTK_Cuboid_5 添加纹理在文件夹 materias,选择想要的纹理直接拖到物体上 把地图多个物体作为一个整体可以右键 create empty,重命名后可以将多个物体拖到这个下,操作整个地图只需要操作这个 empty 删除Main camera由于该项目是一个FPS(第一人称射击游戏),所以不需要第三视角的相机 创建角色这里以一个球体来表示玩家,右键添加一个 sphere,重命名为 Player,右键 Player 创建一个 empty,重命名为...
Web项目-拳皇-下
项目实战–拳皇实现攻击效果在Player类中把人物背景渲染出来,以及添加一个矩形来表示挥拳范围,便于碰撞检测 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758// render方法,表示玩家角色在游戏画面中的呈现形式,这里不是简单地使用矩形填充绘制,而是根据玩家角色当前的状态,从对应的动画信息中获取相应帧的图像,并绘制到游戏画面上,实现更丰富的动画效果展示render() { this.ctx.fillStyle = 'blue'; this.ctx.fillRect(this.x, this.y, this.width, this.height); //如果是正方向 if (this.direction > 0) { //画一个矩形表示挥拳的范围,以便于做碰撞检测 this.ctx.fillStyle =...
并查集
并查集并查集(Disjoint Set Union, DSU) 是一种用于管理元素分组的数据结构,主要支持以下两种操作: 查找(Find):确定某个元素属于哪个集合。 合并(Union):将两个集合合并为一个集合。 并查集常用于解决动态连通性问题,例如判断图中的两个节点是否连通,或者合并两个连通分量。 举个例子:可以看《啊哈算法》的第200页的并查集内容 代码实现 123456789101112131415161718192021222324252627282930313233343536373839404142#include <iostream>#include <vector>using namespace std;class UnionFind {private: vector<int> parent;//存储每个节点的父节点public: UnionFind(int n) { parent.resize(n); for (int i = 0; i < n;...
Trie树
什么是trie树?Trie树(前缀树或字典树)是一种用于高效存储和检索字符串的数据结构。其主要特点是通过共享前缀来优化存储和查询。 Trie 树是一种多叉树的结构,每个节点保存一个字符,一条路径表示一个字符串 例如:字符串him、her、cat、no、nova构成的trie树如下图所示 从图中可以看出 Trie 树包含以下性质: 根节点不包含字符,其他节点包含一个字符。 从根节点到某一节点经过的字符连接起来构成一个字符串。如图中的 him 、 her 、 cat 、 no 、 nova。 一个字符串与 Trie 树中的一条路径对应。 在实现过程中,会在叶节点中设置一个标志,用来表示该节点是否是一个字符串的结尾,本例中用青色填充进行标记。 Trie 树中每个节点存储一个字符,从根节点到叶节点的一条路径存储一个字符串。另外,有公共前缀的字符串,他们的公共前缀会共用节点。如 her、 him 共用 h 节点。 如何生成tire树?Trie 树的生成过程,就是不断将字符串插入树中。 以插入字符串 him 、 her 、 cat 、 no 、 nova...
Web项目---拳皇(上)
项目实战–拳皇创建项目新建文件夹KOF,子文件夹有static、templates,分别用来存放静态文件和html文件,static子文件夹有js,css,images,分别用来存放js代码,css文件和图片等资源 创建仓库git init 初始化文件1234567891011121314<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ...
JavaScript-常用库
常用库jQuery使用方式 在元素中添加: 按jQuery官网提示下载 获取元素12345678function main() { //原来获取元素的方法 let div = document.querySelector('div'); console.log(div); //用jquery获取元素的方法 let $div = $('div'); console.log($div);} 选择器例如: 123456789//选择class为mydiv的元素let $mydiv = $('.mydiv');console.log($mydiv);//选择id为mydiv的元素let $mydiv2 = $('#mydiv');console.log($mydiv2);//选择class为mydiv的元素下的p元素let $p = $('.mydiv >...
JavaScript-事件
事件JavaScript的代码一般通过事件触发。 可以通过addEventListener函数为元素绑定事件的触发函数。 常见的触发函数有: 鼠标click:鼠标左键点击 12345678910let div = document.querySelector('div');function main() { div.addEventListener('click', (event) => { //输出事件的类型,即click console.log(event.type); });}export { main }; dblclick:鼠标左键双击 1234div.addEventListener('dblclick', (event) => { //输出事件的类型,即dblclick console.log(event.type); ...