unity角色属性系统 unity 角色_ide

 

 V大的预科作业测试太难了,先学会unity轻松一下

1.建立角色

首先找到贴图

unity角色属性系统 unity 角色_unity角色属性系统_02

 

 贴图位置如上,在player贴图下是player的几种状态的贴图文件夹

在导入素材前应该先设置贴图的大小,统一为16

unity角色属性系统 unity 角色_ide_03

 

 

按着ctrl单击素材即可多选,批量设置属性

导入角色图片有俩种方法

  1. 直接拖入
  2. 新建Sprite再导入素材

1.直接拖入游戏视图就可以开始后续的设置了

2.新建Sprite再拖入素材

unity角色属性系统 unity 角色_贴图_04

 

 

unity角色属性系统 unity 角色_图层_05

 

 这里新建完之后顺便改名了

unity角色属性系统 unity 角色_ide_06

 

 将素材拖入后即可在游戏视图内看见角色,看不见的话可以设置一下图层

unity角色属性系统 unity 角色_ide_07

 

 上图没设置图层被地图遮挡了

unity角色属性系统 unity 角色_ide_08

 

 然后就可以在Game视图里面预览

unity角色属性系统 unity 角色_图层_09

 

 

unity角色属性系统 unity 角色_ide_10

 

 挺秃然的,这里就一直这样了。

这里如果想要让角色感受到重力就需要给Player加上刚体组件(Rigidbody)

unity角色属性系统 unity 角色_图层_11

 

 选中player,点击Add Component,在Physics 2D中选中Rigidbody 2D添加刚体组件

添加完刚体然后预览游戏就可以看见角色能感受到重力了

unity角色属性系统 unity 角色_图层_12

 

 

2.添加碰撞器

但是这里角色只会一直往下落,所以还需要给角色和地图设置碰撞器

 

unity角色属性系统 unity 角色_贴图_13

 

 首先给player添加collider,依旧是在Physcis 2D中找到Box Collider组件,点击添加一个碰撞器

然后就可以观察到角色附件多了一个绿色的框

unity角色属性系统 unity 角色_unity角色属性系统_14

 

 这就是角色的AT力场(是碰撞器的位置

unity角色属性系统 unity 角色_unity角色属性系统_15

 

 

unity角色属性系统 unity 角色_ide_16

 

 然后选中EditCollider就可以改变碰撞器大小

unity角色属性系统 unity 角色_ide_17

 

 然后就可以设置地图的碰撞器了

unity角色属性系统 unity 角色_unity角色属性系统_18

 

 选中Tilemap组件后就可以在Tilemap中为Tilemap添加Tilemap Collider 2D组件了

unity角色属性系统 unity 角色_ide_19

 

 然后就可以看见地图周围也加了绿框

unity角色属性系统 unity 角色_ide_20

 

 然后就可以站在平台上了

unity角色属性系统 unity 角色_图层_21

 

 而为了避免站在草上这种生草行为

 应该将草这种不需要碰撞箱的地图分另一个Tilemap绘制

unity角色属性系统 unity 角色_ide_22

 

 此处已擦除原Tilemap中的草,然后在grid中新建Tilemap命名为grass,然后在其中绘制

再重新设置tilemap的碰撞器,就不会使草也被碰撞器包围

unity角色属性系统 unity 角色_unity角色属性系统_23

 

 角色也能站在平台上而不是被草撑住了(这个看具体需求吧)

3.角色移动

再顺便加上角色移动吧

首先需要获取左右移动的键位

unity角色属性系统 unity 角色_贴图_24

 

 

这里可以打开unity的edit中观察左右移动的键位与标识名

然后通过这个Horizontal即可获取玩家是否输入了左右位移键位

接着就是代码部分了

unity角色属性系统 unity 角色_贴图_25

 

 

 

 

新建一个C#脚本 

可以在组件中添加,组件添加的js会直接出现在assets文件夹下

unity角色属性系统 unity 角色_ide_26

 

 这里我命名为了PlayerController

unity角色属性系统 unity 角色_unity角色属性系统_27

 

然后新建一个在assets文件夹下新建一个scripts文件夹储存脚本文件

unity角色属性系统 unity 角色_图层_28

这里应该将脚本放到scripts文件夹中方便管理

(也可以新建组件,删掉js然后添加自己手动写的js,脚本组件为空时直接拖入即可

unity角色属性系统 unity 角色_ide_29

 

 然后就可以开始愉快的写代码了

    如果正常的安装完了所有东西,这里双击脚本会自动打开Vs2019进行编辑

unity角色属性系统 unity 角色_unity角色属性系统_30

 

 像这样

(在确保有一定编程的基础下就可以开始进行方向键的获取与更新角色视图(或者说设置角色方向速度)了

unity角色属性系统 unity 角色_unity角色属性系统_31

 

 首先定义俩个变量和一个方法

因为默认继承了MonoBehavior,游戏进行时将会每帧调用update方法(查了查资料,不然实在不是很懂)

(我本意是先学着做一个2D游戏,没打算知其所以然,所以先跟着做吧)

unity角色属性系统 unity 角色_贴图_32

 

 

然后在handleMsg中就需要获取用户的键盘输入,然后设置角色的方向速度

↓康代码吧

unity角色属性系统 unity 角色_贴图_33

 

 然后不要急冲冲的进游戏预览,还需要为脚本的属性加上角色

unity角色属性系统 unity 角色_图层_34

 

 不然会出现如上警告⚠

unity角色属性系统 unity 角色_贴图_35

 

 可以看到我们设置到脚本中的 mPlayer此时还是none,这就需要选中player对象拖入这里,然后记得设置一个速度

unity角色属性系统 unity 角色_unity角色属性系统_36

 

 然后就可以在游戏预览中看到player滚来滚去了

unity角色属性系统 unity 角色_ide_37

 

 

unity角色属性系统 unity 角色_ide_38

 

 应为这里还需要给刚体在属性中锁定z轴,不然角色就会应为加速度的原因而旋转(刹不住车

unity角色属性系统 unity 角色_图层_39

 

 在刚体设置中找到constraints(约束)

选择冻结Z轴旋转即可

 

之后的转向和跳跃就再等会吧

unity角色属性系统 unity 角色_ide_40