Unity官方_第一人称游戏<恶魔射手>----学习笔记一(英雄脚本)

游戏思路:

1.摄像机跟随的第一人称类型游戏

2.游戏可依靠Unity内置功能去实现

3.游戏主要包含:玩家部分、敌人部分、UI部分、粒子系统、音频管理、敌人AI、敌人生产

4.该游戏属于入门级FPS案例,留下众多可拓展部分,可细细道来

而作为第一人称射击游戏,首先动刀子一定是我们的英雄了

在这里先去完成英雄的移动脚本 MyPlayerMove : MonoBehaviour

 public float mMoveSpeed = 5f;   //移动速度

    Vector3 movement;   //移动变量
    Rigidbody mRigidbody;
    Animator animator;  
    int layerMask;  //射击对象蒙版层
    float range = 100;  //子弹最大射程
    private void Awake()
    {
        mRigidbody = GetComponent<Rigidbody>();
        animator = GetComponent<Animator>();
        layerMask = LayerMask.GetMask("Floor"); //取到Layer标签为Floor层的索引
    }

此脚本核心业务逻辑部分如下:

   private void FixedUpdate()
    {
        var h = Input.GetAxisRaw("Horizontal"); //水平偏移量--映射W、S,Up、Down
        var v = Input.GetAxisRaw("Vertical");   //垂直偏移量--同理

        Move(h, v); //英雄移动

        Truning();  //转弯

        Animation(h, v);    //动画
    }
Move函数主要负责对英雄移动的控制,具体实现如下:

    private void Move(float h, float v)
    {
        movement.Set(h, 0, v);  //偏移变量设置初始值
        movement = movement * mMoveSpeed * Time.deltaTime;  //当前位置的偏移量
        mRigidbody.MovePosition(transform.position + movement); //更新英雄位置
    }

定义在Rigidbody下的公共方法MovePosition ,接受3维向量作为参数,移动到此3维向量所在位置


Truning函数负责完成英雄的旋转,具体实现如下:

 private void Truning()
    {
        Ray _ray = Camera.main.ScreenPointToRay(Input.mousePosition);  //射线检测
        RaycastHit _rh; 
        if (Physics.Raycast(_ray, out _rh, range, layerMask))
        {
            var lookView = _rh.point - transform.position;  //英雄位置指向碰撞点的向量LV
            lookView.y = 0f;    //忽略y轴间的差值
            var newRotation = Quaternion.LookRotation(lookView);    //英雄当前方向到向量LV方向需要旋转的四元数
            mRigidbody.MoveRotation(newRotation);   //转向
        }
    }

定义在Rigidbody下的公共方法MoveRotation,接受旋转到目标方向的四元数,得到旋转后新的方向


英雄移动动画实现较为简单,直接贴出代码吧

    private void Animation(float h, float v)
    {
        var walking = h != 0 || v != 0;     //这是一个简单bool表达式,只有h、v中有一个不为0,表示正在移动,此时设置移动动画

        animator.SetBool("IsWalking",walking);
    }

对英雄移动的代码先写这么多,后面继续贴出英雄生命值、英雄射击,两篇脚本

--------------这个游戏在以前刚刚学习Unity时,总是问题不断,在有一定基础之后我希望可以依据这个官方案例使自己的能力有所提升。

以后该认认真真写好博客了。。。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值