Unity Survival Shooter Tutorial

2017-06-03  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读