【Unity开发实战】官方实例SURVIVAL SHOOTER开发心得

其实了解并学习Unity也有了差不多两个月了,之前知识了解一些基础知识,也看了一些官网的API,做了一些实例,但是并没有做过一个完整的游戏,最近在官网看到一个叫SURVIVAL SHOOTER的游戏,并且富有相关的资源和源码,还有英文教程。把项目下载下来看了一下,感觉是一个入门级的简单游戏,十分适合初学者。然后就观看了一下英文教程。博主英语较渣,只能听懂6成。但是看代码是没问题的。当时我也没有记录视屏中的代码,只是了解了一下思想。然后就开始了开发。大概折腾了一天的时间,终于把游戏开发好了。写这篇文章呢,主要是也对其中一些知识点的做一些记录。

控制主角的移动

其实控制移动应该是游戏开发中最基本的一种操作。在Unity中也提供了多种方式来提供开发者使用。下面列举两个比较常用的。

float xAxis=Input.GetAxis("Horizontal"); //获取水平坐标
float zAxis=Input.GetAxis("Vertical"); //获取垂直坐标

transform.Translate(new Vector3(xAxis,0,zAxis)*speed*Time*deltaTime)//根据指定的向量移动物体

这个算是最简单的一种移动方式了。当然transform.Translate方法有六个重载方式。每个重载方法都能实现主角的移动,大家可以去看官网的API,这里不做深究。

//获取刚体组件
Rigidbody playerRigidbody = gameObject.GetComponent <Rigidbody > ( );
//移动刚体到某个位置
playerRigidbody.MovePosition ( transform .position + new Vector3 ( xAxis , 0, zAxis )* speed *Time . deltaTime );

使用这种方式的前提是当前的GameObject中必须要有刚体组件,否则将会报错。


相机跟随主角

相机跟随主角是每个游戏中都会涉及的功能,同样也有很多种方式,这里提供一种,仅供参考:

Vector3 targetPos = player.position + new Vector3 ( 0, 1.7f, -5.5f );//得到相机与主角的相对位置
//两个向量之间的线性变化。按照t,在一秒内从form开始到to结束。
transform.position = Vector3.Lerp ( transform.position,targetPos,smooth*Time.deltaTime);

这种方式使得相机跟随主角的时候更加的平滑。

控制主角的转向

我们要求主角会随着我们鼠标的位置的改变,而面向不同方向,就像CS一样。

  /*控制转向*/
   Ray ray = Camera. main .ScreenPointToRay ( Input. mousePosition );//从鼠标通过屏幕上的一个点,产生一条射线
   RaycastHit hitInfo ;//光线投射碰撞的信息
   if (Physics . Raycast ( ray , out hitInfo, 200 , groundLayerIndex ))
       {
            Vector3 target = hitInfo. point ;//碰撞点
            target .y = transform .position . y;
            transform .LookAt ( target );//让主角面向那个方向

        }

子弹发射:

     private LineRenderer bubbleLineRenderer;//声明LineRenderer
     bubbleLineRenderer=gameObject.GetComponent<LineRenderer>();//获取物体的LineRenderer组件
     bubbleLineRenderer.enabled=true;//激活组件
     Ray bubbleRay=new Ray(transform.position,transform.forward);
     RaycastHit hitInfo;

     if(Physic.Raycast(bubbleRay,out hitInfo)){
          bubbleLineRenderer.SetPosition(1,hitInfo.Point);//设置LineRenderer的位置
     }else
          bubbleRenderer.SetPosition(1,transform.position+transform.forward*50);

其实在开发这个游戏的过程中才发现自己有很多东西都没有搞懂,很多的知识只有在实际开发中才会明白。对Unity还有很多要学

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值