美文网首页
Unity Survival Shooter Tutorial

Unity Survival Shooter Tutorial

作者: 信都吃瓜 | 来源:发表于2017-06-03 17:41 被阅读0次

    usingUnityEngine;

    publicclassPlayerMovement:MonoBehaviour

    {

    publicfloatspeed=6f;//玩家移动速度

    Vector3movement;//定位玩家移动方向

    Animatoranim;//引用动画组件

    RigidbodyplayerRigidbody;//引用玩家刚体

    intfloorMask;//建立遮罩层使射线只能作用在地面上

    floatcamRayLength=100f;//射线长度

    voidAwake()

    {

    //为地板层创建一个遮罩层

    floorMask=LayerMask.GetMask("Floor");

    //获取动画和刚体组件

    anim=GetComponent();

    playerRigidbody=GetComponent();

    }

    voidFixUpdate()

    {

    //输入坐标

    floath=Input.GetAxisRaw("Horizontal");

    floatv=Input.GetAxisRaw("Vertical");

    //使角色在场景中行走

    Move(h,v);

    //使角色跟着鼠标转动

    Turning();

    //角色动画

    Animating(h,v);

    }

    voidMove(floath,floatv)

    {

    //建立坐标轴中的底部坐标

    movement.Set(h,0f,v);

    //规范化坐标向量,使速度每秒成正比增加向量标准化:0~1或某个范围内,再乘以速度

    movement=movement.normalized*speed*Time.deltaTime;

    //

    playerRigidbody.MovePosition(transform.position+movement);

    }

    //角色坐标

    playerRigidbody.MovePosition(transform.postion+movement);

    }

    voidTurning()

    {

    //建立物理射线,获取鼠标坐标

    Ray camRay=Camera.main.ScreenPointToRay(Input.mousePosition);

    //射线打到地面

    RaycastHit floorHit;

    //如果射线打到物体,并且物体属于floormask层

    if(Physics.Raycast(camRay,outfloorHit,1000,floorMask))

    {

    //获取鼠标点到地面上的点和人物当前坐标之间的向量差

    Vector3 playerToMouse=floorHit.point-transform.position;

    //设置差值的y轴角度为0

    playerToMouse.y=0f;

    //计算角度

    Quaternion newRotation=Quaternion.LookRotation(playerToMouse);

    //赋值给人物

    playerRigidbody.MoveRotation(newRotation);

    }

    }

    voidAnimating(floath,floatv)

    {

    //

    boolwalking=h !=0f|| v !=0f;

    //

    Animator.SetBool("IsWalking",walking);

    }

    }//End

    相关文章

      网友评论

          本文标题:Unity Survival Shooter Tutorial

          本文链接:https://www.haomeiwen.com/subject/abjpfxtx.html