写在最前
这一系列的杂谈是为了记录并鞭策我的unity学习的,所以一些地方写的既像教程,又像自言自语。如果在未来的某一天可以帮到某个人的话,那么我可能会觉得很开心吧。
由于我习惯先在笔记软件里写好再发,所以可能会出现一些时序问题,不过我想应该不用在意吧。
命名准则
一切变量的命名法均遵循以下原则:
第一个字母小写,后面随意,建议后续的单词词头大写
如:healthText
你知道吗,写成HealthText会报错。很神奇对吧?
也许在之后这一条仍然会继续更新,没准我会遇到更奇葩的情况呢?
按键检测
当我们需要移动一个物体时,常用的方法是建立一些变量,并使用特定的方法改变这些变量的数值,再将这些数据输入刚体对象中。
例如以下代码:
void FixedUpdate()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
...
}
可以看到这里有两个浮点变量horizontal和vertical。
当我们调用Input.GetAxis()时,我们实际上是在查询unity引擎的输入管理器( Input Manager,在 编辑-项目设置 中可以找到 ),其中有一些条目,例如传入该方法的字符串"Horizontal",它负责监听玩家的左右方向或AD键。这些映射可以被更改。
当按下左键(-1)或右键(+1)时,它会把这个值存储到变量中。
刚体与碰撞体
Collider 碰撞体
碰撞体有许多种形状可供选择。为游戏物体添加这类组件后,游戏物体会拥有体积。选择编辑碰撞体后的按钮来选中碰撞体的边缘,来手动修改它的范围。
Rigidbody 刚体
刚体组件会赋予物体一些物理特性,比如重力,质量等等。我们可以直接把重力大小设为0来消除重力影响。
我们可以在Constraints下选择”冻结旋转 Z“来让物体不会因为移动而旋转。
要想在代码中使用它相关的内容,我们可以在脚本中创建以下内容:
//创建一个公共的Rigidbody2D引用,命名为rb
public Rigidbody2D rb;
在unity编辑器中,当游戏物体搭载包含以上内容的脚本后,脚本对应的面板中会出现一个槽位,允许将对应的需要通信的刚体组件拖入,以建立联系。
基础的移动控制
当游戏物体具有刚体组件时,它将具有一定的物理性质。其中容易被观察到的性质之一就是速度。
我们可以通过设置刚体的速度为一个新的二维向量来实现。
二维向量可以用来描述我们想要的移动的方向。
//创建一个公共的Rigidbody2D引用,命名为rb
public Rigidbody2D rb;
...
{
// velocity为速度,x、y为外部传入的X轴分量与Y轴分量。
rb.velocity = new Vector2(x,y);
}
如果在这个二维向量后乘以给定的速度值,就可以方便地控制刚体的速度。
一般而言,x与y是与检测玩家按键相关的float变量,如 按键检测 一节中出现的horizontal和vertical变量,它们在这里分别可以担任x与y。
