1、编写要引用的程序集。
我们几乎可以编写任何用途的程序集,就像用C#开发.net类库一样。不过需要注意的是,如果要编写从Unity继承的类(比如从MonoBehaviour派生的组件等等),则不能使用namespace,目前的Unity不支持,用了编译报错。
虽然不能使用namespace,但我实际测试后发现若新项目中创建了与引用的程序集同名的类,Unity编译并不会报错,而且实际执行也很正常。由于没有介绍Unity内部如何编译的资料,我们还是尽量不要重名吧。
2、将程序集DLL放置到目标Unity工程的Asset目录下(这点很重要)。
虽然可以用VisualStudio编写Unity代码,但实际上Unity生成游戏时还要自己再编译一遍。因此,在VS中的引用设置不能被Unity所使用。我曾经尝试过把要引用的程序集放在GAC中也不行。正确的做法是把dll放在Asset下,Unity能很好地识别它。
如果我们把组件编写在程序集中的话,展开程序集就能看到这些组件,甚至可以直接把它们拖动到GameObject中,很强大吧!
3、在目标工程中添加引用,编写代码。
这个没什么好说的。
4、测试通过,成功!
由于可以方便地使用程序集,
首先每个物体都必须拥有的一个不可移除的组件是Transform组件。我们可以通过改变物体的位置进行移动,那如果遇到墙面,遇到一些地形,又不想让人物移动的时候穿墙,穿模,该如何处理呢?
第一种方法我们可以通过物理引擎来控制,也就是Rigidbody组件。
第二种方法我们可以通过角色控制器来控制,也就是CharacterController组件。
角色控制器组件也属于物理组件,在Physic物理属性下,我查资料显示角色控制器主要用于第三人称和第一人称游戏主角(人形为主)的控制。它们的区别在于,如果我用了刚体组件,有两种状态,collider或者trigger。如果用了前者,我们碰撞的时候会被撞飞,我们不想要这种物理效果,但是用trigger又无法阻挡。所以这种情况我们可以使用角色控制器。
参数介绍
<1>Slope Limit
斜率限制,控制角色最大的爬坡斜度。我图中设置的是45度,也就是说45度以上的斜坡角色控制器就爬不上去了
<2>Step Offset
台阶高度,控制角色可以迈上最大的台阶高度。图中我设置的可爬台阶高度是2.83,超过就爬不上去了。但是这里报错了。说台阶高度必须小于等于高度+半径*2要不然会出错。
<3>Skin Width [默认即可]
皮肤厚度,在角色的外围包裹着一层“皮肤”,设置这层皮肤的厚度。
数值调大,最明显的就是角色和地面之间的间距变大,也就是角色皮肤变厚了。
<4>Min Move Distance [默认即可]
最小移动距离,默认是 0.001,也就是 1 毫米。
如果该数值调大,因为我们在代码中用的是轴来控制移动,轴来控制移动的特点就是每一帧移动的距离非常小,所以调大角色达不到最小移动距离。角色控制器就不会移动。
<5>Center/Radius/Height
角色控制器组件在 Scene 面板中体现为一个“胶囊碰撞器”的形状。
Center:控制中心点的位置;Radius:控制半径;Height:控制高。
其实在unity中我们正真控制的是碰撞器的移动旋转。我们所看到的只是一个外衣我感觉是这样的。一个游戏物体附加了角色控制器组件后,和角色控制器组件共存的其他的碰撞器组件是处于“无效”状态。和场景中其他物体的交互碰撞,是以角色控制器组件的边缘进行判断的。
事件函数
OnControllerColliderHit(ControllerColliderHit hit)函数
可以通过 hit 获取到角色碰撞器碰撞到的物体的信息。
//使用角色碰撞器调用的触发碰撞的事件
void OnControllerColliderHit(ControllerColliderHit col)
{
Debug.Log(col.transform.name)//打印输出碰撞到的物体的名字
}
常用方法
在物体上添加CharacterController组件后再使用此方法就可以实现人物具备碰撞效果但是不会有物理效果啦。
以上就是角色控制器的介绍以及使用啦,按步骤来 *** 作对小白来说也是相对简单的,只要注意一些文中说明的细节,现在就开始行动起来一起学unity吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)