最近学习完了恶梦射手游戏的制作,现在将其中一些需要记下的点记下来。
本人使用的是Uinty5.0,视频教程是Unity4.5。
游戏跟着做完后有着一些修改,发布到Android手机上运行正常,操作是使用的EasyTouch插件提供的虚拟键盘。
学习点记录:
1.动画控制器使用(Animator Controller):
这里主要是用来控制主角敌人移动,静止,死亡的三种状态动画的切换,
这里黄色的部分是默认初始状态,每条关系线里面设置他们的动画切换条件
需要在这里面添加条件参数。
注意:在跟着视频里面进行设置时,是将Any State切换到Death的,这样的设置在Unity5.0中运行时就会发现当满足死亡动画播放条件时,Death动画会重复进行播放,因为Any State包含了Death-〉Death。
在状态图中设置好各种动画切换的关系之后,便可以通过代码控制了:
使用Animator.SetBool("ParameterName", true);
由于我使用的Parameter是Bool型变量所以使用SetBool方法。
2.
Physics.Raycast
使用比较多的是
static function Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
Parameters参数
-
ray射线的起点和方向
-
distance射线的长度
-
hitInfo如果返回true,hitInfo将包含碰到器碰撞的更多信息。
-
layerMask只选定Layermask层内的碰撞器,其它层内碰撞器忽略。
更详细的大家可以参考文档。
我们用这个来检测主角发射的激光应该绘制到哪个坐标点,用hitInfo获取到碰撞到的物体信息,然后用lineRender来渲染我们的激光。
这里值得注意的是,默认检测是包含了触发器的,我们一般需要检测到的是碰撞器的边缘信息,所以需要将Edit-〉projectSettings-〉Physic:
将勾选去掉即可忽略掉射线对于触发器的检测。
脚本中使用示例:
<span style="white-space:pre"> </span>lineRender.SetPosition(0,transform.position);
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
{
lineRender.SetPosition(1, hitInfo.point);
if (hitInfo.collider.tag == Tag.enemy)
{
//
}
}
else
{
lineRender.SetPosition(1, transform.position + transform.forward * 100);
}
在这个游戏里我是使用动态的显示 JoystickAxis,左半屏是用虚拟杆来做控制,又半屏是用来控制方向。
1〉移动控制我是自己脚本控制的,也可以直接用它面板里的设定实现
仅用EasyJoystick来获取摇杆左右的值,最左边是-1,最右边是1。
<span style="white-space:pre"> </span>float h = movejoystick.JoystickAxis.x;
float v = movejoystick.JoystickAxis.y;
if (h != 0 || v != 0)
{
this.GetComponent<CharacterController>().SimpleMove(v * transform.forward * speed);
this.GetComponent<CharacterController>().SimpleMove(h * transform.right * speed);
}
不用插件的话,通过检测触摸左移右移或上移下移距离,再根据所设定的虚拟杆区域半径大小可以得到-1-+1的值。
2〉旋转控制我是直接在插件上提供得面板上实现:
由于是旋转只需要type为Direct
使用X axis左右移动来触发左右旋转操作。
speed是灵敏度;
Joystick X to指定触发对象
Influenced用来设定影响对象的值,旋转的话就用Rotate Local值(也就是你操作虚拟杆左右移动时,影响你对应触发对象的属性值)
Axis influenced设定哪个轴进行变换
(其他的具体使用情况大家可以自己试试,查看相应的说明文档进行使用,是个非常方便的插件)
前面操作实现也可以使用插件对应以上在面板进行设定。
4.发布时需要注意的是:
这里不能够使用默认值,否则发布时就会报错。
游戏下载链接:http://pan.baidu.com/s/1eQjpAAu,密码:11pr
Polaris_Aspire
——爱生活,乐分享
——爱生活,乐分享