Unity Physics2D 2d物理引擎游戏 笔记

这篇具有很好参考价值的文章主要介绍了Unity Physics2D 2d物理引擎游戏 笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2d 材质
Unity Physics2D 2d物理引擎游戏 笔记
里面可以设置
Unity Physics2D 2d物理引擎游戏 笔记
摩擦力 和 弹力

Simulated:是否在当前的物理环境中模拟,取消勾选该框类似于Disable Rigidbody,但使用这个参数更加高效,因为Disable会销毁内部产生的GameObject,而取消勾选Simulated只是禁用。

Kinematic 动力学刚体
动力学刚体不受重力和力的影响,而受用户的控制,需要使用类似Rigidbody2D.MovePosition、Rigidbody2D.MoveRotation的方法。它于静态刚体一样,只与动态刚体会发生碰撞。

嗯,而且质量应该算是无限大,所以它在运动的时候会撞开所有的动态刚体。
使物体移动可以用 AddForce 和 velocity
AddForce 分两种 Force 和 Impulse

如何判断是否在地上?
判断velocity的y是否等于0 是不行的 因为在空中的某一时刻速度也会是0
所以需要 Physics2D.OverlapCircle

做像素游戏

需要设置一些内容

Sprite Mode: 选择"Multipe"
Single: 整张贴图文件就是一个精灵
Multipe: 贴图文件包含多个精灵,需要进一步切割。
Polygon: 类似Single,但允许自定义精灵的网格轮廓。
PPU(Pixels Pre Unit):
这个属性表示贴图中多少个像素对应Unity中的1个单位。
Filter Mode:
这个属性用于处理贴图时采用的抗锯齿算法。我们做的是像素游戏,每一个像素都是宝贵的,一定要把抗锯齿关闭,否则画面就糊了。所以选择"Point(no filter)“。
Compression:
这个选项是对贴图进行压缩,同样为了我们宝贵的像素,一定要关闭它。选择"None”。

Collision Decection
由于游戏中的移动时并不是完全连续的,而时根据移动时间来判断当前应该的位置。这样会导致游戏卡顿时画面的跳跃,或这当速度过快时在两帧之间会移动很大距离导致跨越了某个碰撞体,导致的穿模现象。这个属性用来设置是否用额外的计算来避免卡顿时的穿模。
Discrete: 离散方式,不管穿模的问题。
Coutinuous: 连续方式,当移动的方向上有碰撞体则不会在两帧之间跨越穿模,需要额外的计算量。

Constraints: 约束,禁止在某一个或几个轴方向上旋转。在2D刚体的物理模型中,由于受力位置的影响,对象会沿着Z轴旋转,我们的角色走着走着就摔倒了。勾选Freeze Rotation Z就可以避免。

Gravity Scale 重力倍数

如果想用键盘上下左右移动 不需要监听 awsd 按键 和 上下左右按键
只需要
float axisX = Input.GetAxis(“Horizontal”);
float axisY = Input.GetAxis(“Vertical”);

float ax1 = Input.GetAxisRaw(“Horizontal”);
float ay1 = Input.GetAxisRaw(“Vertical”);

他自动包括上面两组按键

GetAxisRaw 是只有1 0 -1
GetAxis 是慢慢改变的 中间数值有过度

其实是可以设置的
Unity Physics2D 2d物理引擎游戏 笔记
可以看这里

Gravity: 当按键松开时,"轴(Axis)值"回到"中性(neutral)值"的速度。这句话翻译自官方文档。简单讲就是松开按键时,返回值落回0的速度。
Sensitivity: 灵敏度,就是按下按键时返回值从01的速度。
Snap: 截断
如果此项不勾选。那么当按下反向的按键时,返回值会根据Gravity属性逐渐从1变为0,然后根据Sensitivity属性从0逐渐变为-1,有个刹车滑动的效果。
如果勾选此项,则返回值会立即1变为0,然后根据Sensitivity属性,逐渐从0变为-1
Dead: 这个属性表示敏感度,在多大的范围内,返回值始终为0。主要用于摇杆设备,防止摇杆过于灵敏导致的晃动。

Update 和 FixedUpdate
FixedUpdate 默认是0.02 秒执行一次
可以在下面修改
Unity Physics2D 2d物理引擎游戏 笔记
Update 会因为卡顿 调用变少
FixedUpdate 则没有这个问题
所以原则就是
在update里 监听玩家控制 FixedUpdate 里进行动作

Update函数中保留接收按键数据的代码,因为Unity在Update函数调用前会读取输入设备。
如果在FixedUpdate中接受按键数据,则可能出现虽然按下按键,但Input返回值是0的情况。
将速度计算和修改刚体属性的代码放到FixedUpdate函数。

当比尔转身的时候,不会立刻向反方向移动,而有一个逐渐减速的刹车效果。这样与原版不一致。
处理方法是,菜单"Edit->Project Settings->Input Manager->Axes(展开)->Horizontal(展开)" ,将Snap属性勾选。这样转身时就没有刹车效果了。

检测是否站在地上

onGround=Physics2D.Raycast(transform.position, Vector3.down, 0.1f, 1 << LayerMask.NameToLayer(“跳台”));

精灵图
Unity Physics2D 2d物理引擎游戏 笔记
随便拿一张
放到unity里
Unity Physics2D 2d物理引擎游戏 笔记
设置成这个

Unity Physics2D 2d物理引擎游戏 笔记
sprite editor里 Unity Physics2D 2d物理引擎游戏 笔记
点击 slice
就分割了
Unity Physics2D 2d物理引擎游戏 笔记
再看资源 就被分割成了小图

Unity Physics2D 2d物理引擎游戏 笔记
可以在 sprite editor 里点击子图 设置一些参数 比如pivot

Unity Physics2D 2d物理引擎游戏 笔记
这个是干啥的?
假如你希望 你的对象是一格子一格子的移动的话 也就是一个步进移动 咋办?
按住ctrl 再拖动三根线 就可以了
他会按照你设定的值 移动
Unity Physics2D 2d物理引擎游戏 笔记
写着一半死机了。。晕了 草稿都丢了

整一张图
Unity Physics2D 2d物理引擎游戏 笔记
放游戏里显示是这样的
Unity Physics2D 2d物理引擎游戏 笔记
模模糊糊 没有像素的颗粒感

你需要设置纹理的这个
Unity Physics2D 2d物理引擎游戏 笔记
Unity Physics2D 2d物理引擎游戏 笔记
看到没 一下子清晰了
现在旋转一下
Unity Physics2D 2d物理引擎游戏 笔记
和右边相比 有没有觉得 又不那么像素了?缺少了锯齿
Unity Physics2D 2d物理引擎游戏 笔记
可以设置下镜头里的这个
Unity Physics2D 2d物理引擎游戏 笔记
现在感觉差不多了!
如果让他连续转起来会发现奇奇怪怪的。

设计窗口和game窗口显示的效果是不一样的
Unity Physics2D 2d物理引擎游戏 笔记
Unity Physics2D 2d物理引擎游戏 笔记
不填充 用不到
竖向填充
横向填充
窗口模式 固定大小

回想一下 h5 你是怎么做动画的
是不是把动画 像 image label 一样 直接托到stage上
unity不是 因为unity是组件形式的
所以他没有专门的动画
他的逻辑是
任何一个sprite 都可以通过添加 Animator 组件 变成动画
那如何做动画
Unity Physics2D 2d物理引擎游戏 笔记
选中动画的几个图
直接拖拽到场景里就可以了
unity会提示你创建New Animation.anim 文件
这个就是动画文件
这一点和h5不一样 h5是一个动作文件里面有好多动作
unity不是 一个动画就是一个单独的文件
比如跑 跳 都是单独的文件
unity还会自动帮你创建好 controller文件
Unity Physics2D 2d物理引擎游戏 笔记
单独的anim 是不能用的
你需要在sprite上挂一个 Animator 组件
然后挂上创建的那个controller文件。
3d也是一样的逻辑。

如果希望光源产生阴影 那么一定要打开灯光的这个
Unity Physics2D 2d物理引擎游戏 笔记
然后给需要产生阴影的加
Shadow Caster 2D 组件
Unity Physics2D 2d物理引擎游戏 笔记
接受阴影
你会发现
Unity Physics2D 2d物理引擎游戏 笔记
看 有阴影和光源了!

灯光可以开启 normal maps 这个会开启法线贴图
Unity Physics2D 2d物理引擎游戏 笔记
可以设置法线贴图 我瞎画的
Unity Physics2D 2d物理引擎游戏 笔记
Unity Physics2D 2d物理引擎游戏 笔记
最后变成这样了

Unity Physics2D 2d物理引擎游戏 笔记
创建地图
Unity Physics2D 2d物理引擎游戏 笔记
他长这样
Unity Physics2D 2d物理引擎游戏 笔记
Unity Physics2D 2d物理引擎游戏 笔记
在tile palette视图里 创建新的调色板
然后把你的资源托进去就可以了 可以是单独的图 也可以是图集 都行

你需要设置一下grid的大小
不然你会发现 拖进去的格子 太大或者太小了
Unity Physics2D 2d物理引擎游戏 笔记
比如 我拖进去的地面 大小是30像素 进去结果是这样的
改成0.3 0.3
就ok了
Unity Physics2D 2d物理引擎游戏 笔记
可以用这个操作
Unity Physics2D 2d物理引擎游戏 笔记
移动啊 删除啊 选中 都是这里

我刷了一个超级玛丽的 非常方便
Unity Physics2D 2d物理引擎游戏 笔记
Unity Physics2D 2d物理引擎游戏 笔记
任意选中一个格子

可以进行一些操作 比如
Unity Physics2D 2d物理引擎游戏 笔记
插入一行 插入一列等
你会发现变这样了
Unity Physics2D 2d物理引擎游戏 笔记
这样就不用自己挨个移动了

Unity Physics2D 2d物理引擎游戏 笔记
选中裁切出来的资源
Unity Physics2D 2d物理引擎游戏 笔记
长这样
Unity Physics2D 2d物理引擎游戏 笔记
可以选择 碰撞体
Unity Physics2D 2d物理引擎游戏 笔记
Tilemap Collider 2D 组件不会为此瓦片生成任何碰撞体形状。
Tilemap Collider 2D 组件基于分配给瓦片的精灵生成碰撞体形状。碰撞体形状基于为精灵设置的 Custom Physics Shape。
Tilemap Collider 2D 组件基于网格单元格的形状(由 Grid 组件的选定单元格布局确定)生成碰撞体形状。

还可以设置一下调色盘参数哦
Unity Physics2D 2d物理引擎游戏 笔记
接下来 如何给tile map 放碰撞呢?
只需要在tilemap上挂上
tilemap collider 2d 组件 就可以了
Unity Physics2D 2d物理引擎游戏 笔记
就会这样子

想创建简单的tile 动画咋办呢

Unity Physics2D 2d物理引擎游戏 笔记
创建 Animated Tile
Unity Physics2D 2d物理引擎游戏 笔记
他长这样子
Unity Physics2D 2d物理引擎游戏 笔记
里面可以设置现实哪些图
然后把这个文件拖拽到你的调色盘里
就可以了
到了游戏里 他会自动切换显示的
这个适合做一些海洋啊 草地啊 什么的

RuleTile

https://docs.unity3d.com/Packages/com.unity.2d.tilemap.extras@4.0/manual/RuleTile.html

Unity Physics2D 2d物理引擎游戏 笔记
老规矩 先new一个
直接拖拽到 调色盘里
就可以用了
他是一个类似九宫格的
Unity Physics2D 2d物理引擎游戏 笔记
先设置默认显示的
Unity Physics2D 2d物理引擎游戏 笔记
然后就是设置这个了
这个是啥意思呢
x 就是不是这个的意思 比如 空的 或者 别的tile
举个例子
Unity Physics2D 2d物理引擎游戏 笔记
比如这样的

Unity Physics2D 2d物理引擎游戏 笔记

显示出来就是这样的
他判断 上面如果不是这个 就会显示

Unity Physics2D 2d物理引擎游戏 笔记
如果是绿色箭头呢

Unity Physics2D 2d物理引擎游戏 笔记
这个意思是说 如果是这个 就显示

Unity Physics2D 2d物理引擎游戏 笔记
如果这样呢
Unity Physics2D 2d物理引擎游戏 笔记
就会如此
因为中间是旋转

Tilemap Collider 2D Composite Collider 2D

Unity Physics2D 2d物理引擎游戏 笔记
只添加 Tilemap Collider 2D
那么 每个格子都是单独计算碰撞的
性能低下
如果想合并 就需要勾选 composite
但是需要添加 Composite Collider 2D组件
这时候你会发现 碰撞线 变化了
变成一整个的

大家都玩过魂斗罗吧
Unity Physics2D 2d物理引擎游戏 笔记
从下面的平台跳到上面的平台 不会被阻挡 并且 会承载住玩家
这个要用
Platform Effector 2D
Unity Physics2D 2d物理引擎游戏 笔记
并且勾选这个

Unity Physics2D 2d物理引擎游戏 笔记
如果调成360
那么任何角度都不能穿过去
如果是180 那么从下到上 可以跳上去

如果你让主角 跳起来 会发现 他穿到地里去了

速度太快 穿模了

Unity Physics2D 2d物理引擎游戏 笔记
主角的改成这样就可以了

如果你想 按照y轴 排序
找到这个
Unity Physics2D 2d物理引擎游戏 笔记
Unity Physics2D 2d物理引擎游戏 笔记
改 Transparency Sort Mode 就可以了文章来源地址https://www.toymoban.com/news/detail-423331.html

到了这里,关于Unity Physics2D 2d物理引擎游戏 笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 了解Unity编辑器之组件篇Physics 2D(十二)

    一、Area Effector 2D区域施加力):用于控制区域施加力的行为 Use Collider Mask(使用碰撞器遮罩):启用后,区域施加力仅会作用于特定的碰撞器。可以使用Collider Mask属性选择要作用的碰撞器。 Collider Mask(碰撞器遮罩):选择要使用区域施加力的碰撞器。可以通过勾选碰撞器层

    2024年02月15日
    浏览(30)
  • 2022版本unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)

      👨‍💻个人主页:@元宇宙-秩沅 hallo  欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由  秩沅  原创 收录于专栏 unity实战入门  ⭐相关文章⭐ ——————————————————— -[本站最全-unity常用API大全(万字详解),不信你不收藏] -[关于游戏剧情模式中用到的

    2024年02月03日
    浏览(52)
  • DOTS Unity.Physics物理引擎碰撞事件处理

    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics 物理引擎的主要流程与P ipeline   Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来执行:   

    2024年01月18日
    浏览(36)
  • DOTS Unity.Physics物理引擎碰撞查询核心分析

      最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞查询以及核心相关概念。 Unity.Physics碰撞查询概述   碰撞查询(Collison Qurey)是Unity.Physics物理引擎中的一个很重要的功能。很多游戏逻辑都需

    2024年04月25日
    浏览(34)
  • DOTS Unity.Physics物理引擎的核心分析与详解

    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们来给大家分享和介绍一下这个物理引擎的使用。 Unity.Physics 的设计哲学 Unity.Physics是基于DOTS设计思想的一个高性能C#物理引擎的实现,  包含了物理刚体的迭代计算与碰撞检测等查询。Unity.

    2024年03月18日
    浏览(39)
  • Unity核心3——2D物理系统

    ​ 刚体是物理系统中用于帮助我们进行模拟物理碰撞中力的效果的 ​ 2D 物理系统中的刚体和 3D 中的刚体基本是一样的,最大的区别是对象只会在 XY 平面中移动,并且只在垂直于该平面的轴上旋转 ​ 不同于 3D 刚体,2D 刚体具有以下三种类型: ​ 物体会受到力的影响移动和

    2024年02月09日
    浏览(38)
  • Unity物理相关组件——2D关节

    一:前言  关节组件用来模拟物体与物体之间的连接关系,必须依赖于刚体组件 二:Hinge Joint 2D 用于实现链条物体、钟摆等物体的模拟 ——Enable Collision:是否开启碰撞 ——Connected Rigid Body:关联的刚体(如果为空则默认连接到世界,就算刚体有重力也不会下落) ——Auto

    2024年02月06日
    浏览(24)
  • 了解游戏引擎,游戏引擎的选择:2D3D游戏开发

    常用的游戏开发引擎有很多,以下是一些在游戏开发领域中较为流行和广泛应用的引擎: 1. Unity游戏引擎 特点: 强大的跨平台支持,可以发布到多个平台,包括PC、移动设备和主机。 大量的插件和资产商店,便于开发者获取各种功能和资源。 相对易学易用,拥有大量的教程

    2024年03月10日
    浏览(37)
  • unity 2d游戏开发教程(2d战棋)

    unity 2d 游戏开发教程(2d战棋) 类似的游戏有:火焰纹章,梦幻模拟战 素材下载地址: 人物 https://brullov.itch.io/generic-char-asset 场景 https://anokolisa.itch.io/sidescroller-pixelart-sprites-asset-pack-forest-16x16 场景2:https://anokolisa.itch.io/dungeon-crawler-pixel-art-asset-pack/devlog/447513/12th-road-map-for-pi

    2024年02月13日
    浏览(36)
  • UNITY—2D游戏制作入门!

    Unity作为当今最流行的游戏引擎之一,受到各大厂商的喜爱。 像是炉石传说,以及逃离塔克夫,都是由unity引擎开发制作。 作为初学者的我们,虽然无法直接做出完成度那么高的作品,但每一个伟大的目标,都有一个微不足道的开始。让我们从一个2D小游戏入手,来学习Unit

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包