码迷,mamicode.com
首页 > 其他好文 > 详细

第一人称射击游戏总结概览

时间:2016-03-10 21:54:14      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

  这个游戏小项目为第一人称射击游戏

大概分为几个步骤:

一:主角的制作

  1.控制主角移动的实现

  要点:

    character Controller组件的理解

    rigidbody组件的理解

    colider与rigidbody的理解

    用代码控制主角的移动——键盘交互的实现

    

    //操作主角移动
        //定义3个值控制移动
        float xm = 0, ym = 0, zm = 0; 

//上下左右运动
        if (Input.GetKey(KeyCode.W))
        {
            zm += m_movSpeed * Time.deltaTime;
        
        }
        else if (Input.GetKey(KeyCode.S))
        {
            zm -= m_movSpeed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.A))
        {
            xm -= m_movSpeed * Time.deltaTime;
        }
        else if(Input.GetKey(KeyCode.D))
        {
            xm += m_movSpeed*Time.deltaTime;
          
        }

另外贴上player里面一些变量的定义,帮助定义

//Transform 组件
    public Transform m_transform;
    
    //角色控制器组件
    CharacterController m_ch;

    //角色移动速度
    float m_movSpeed = 3.0f;

    //重力
    float m_gravity = 2.0f;

    //生命值
    public int m_life = 5;

 

    

在编辑器中为主角显示一个图标:因为之前实现主角的时候是通过一个GameObject->empty上添加character Controller来实现的,所以为了在编辑的时候方便一点,我们用一张图片在编辑器中代表主角,这张图片只能在编辑器中显示,代码如下:

void OnDrawGizmos()
{
    Gizmos.DrawIcon(this.transform.postion,"spawn.tif");



}

 

  

  2.绑定摄像机

    先定义摄像机的属性

 //摄像机Transform
    Transform m_camTransform;

    //摄像机旋转角度
    Vector3 m_camRot;

    //摄像机高度(主角身高)
    float m_camHeight = 1.4f;

 

 

 

  3.绑定

 

    接下来就是摄像机位置与朝向和主角的绑定了

  首先:start函数中摄像机位置与朝向的初始化

  

void Start(){

  //获得摄像机的初始位置  
    m_camTransform=Camera.main.transform;

    
   //将摄像机的初始位置与主角初始位置一致
    Vector3 pos=m_transform.postion;
    pos.y+=m_camHeight;
    m_camTransform.postion=pos;

//将摄像机朝向与主角一致
    m_camTransform.rotation=m_transform.rotation;
  m_camRot=m_camTransform.eulerAngles;
    
  //锁定光标
  Screen.lockCursor=true;
}

  另外,关于光标锁定,所谓光标锁定

  技术分享  

  这里有一个问题,就是Transform.rotation和eulerAngles问题,这里有些不懂,先留下,以后解决

 

接着,就是在update()函数中随时更新摄像机位置与朝向,使其与主角位置保持一致了

  //获取鼠标移动距离
        float rh = Input.GetAxis("Mouse X");
        float rv = Input.GetAxis("Mouse Y");

        //旋转摄像机
        m_camRot.x -= rv;
        m_camRot.y += rh;
        m_camTransform.eulerAngles = m_camRot;

        //使主角的面向方向与摄像机一致
        Vector3 camrot = m_camTransform.eulerAngles;
        camrot.x = 0; camrot.z = 0;
        m_transform.eulerAngles = camrot;
    //主角移动代码

        //使摄像机位置与主角一致
        Vector3 pos = m_transform.position;
        pos.y += m_camHeight;
        m_camTransform.position = pos;

 

第一人称射击游戏总结概览

标签:

原文地址:http://www.cnblogs.com/YTYMblog/p/5263430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!