关闭

恶梦射手学习笔记

标签: Unity3D恶梦射手
1080人阅读 评论(0) 收藏 举报
分类:

最近学习完了恶梦射手游戏的制作,现在将其中一些需要记下的点记下来。

本人使用的是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);        
        }

3.EasyTouch的使用
在这个游戏里我是使用动态的显示 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
——爱生活,乐分享

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28302次
    • 积分:460
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:5篇
    • 译文:0篇
    • 评论:2条
    文章分类