前几天突然有兴趣了解一下手游相关的开发 刚开始完全没有头绪,然后慢慢了解了一些知识后,决定尝试写一个类似于神庙逃亡的游戏效果
1.准备工作
先导入素材 (官方商店里边的)机器人素材 带有跑步动作 在Animator中把跑步动画设为默认即可
搭建场景 这里我没有做什么地图 就是一个大的Plane
给Robot添加刚体和碰撞体 设置合理的大小
在神庙逃亡中摄像头必须跟随玩家的移动(由于玩家受重力的影响)我给摄像头添加一个和玩家相同的移动速度
2.代码
1.摄像机脚本
首先是摄像头脚本`
public GameObject Player;//玩家public float UpDis = 5;//数值方向偏移量public float AwayDis = 5;//水平方向偏移量public float smooth = 3;//顺滑度private Vector3 Targetposition;//目标位置private void Update(){Targetposition = Player.transform.position + UpDis * transform.up - AwayDis * Player.transform.forward; //实现摄像头和玩家之间的距离transform.position = Vector3.Lerp(transform.position, Targetposition, Time.deltaTime * smooth);//实现可以平滑的移动摄像头transform.LookAt(Player.transform);}
在这大致介绍一下Vector.lerp(a,b,time); 大致意思是a位置到b位置 以time的顺滑度变化(纯属个人理解)
transform.LookAt(Gameobject);旋转自身,使得当前对象的指向目标对象Gameobject所在的位置。
这样实现了摄像头跟随玩家的效果了
2.玩家脚本
private float GravitySpeed = 5;//重力感应速度private float Direct;//控制旋转方向private Vector3 BeginPos;//开始位置private void Update(){Touch();transform.Translate( Vector3.forward* Time.deltaTime * 5);Vector3 dir = Vector3.zero;//初始化坐标dir.x = Input.acceleration.x;//获取重力感应效果transform.Translate(dir * Time.deltaTime * GravitySpeed);transform.rotation = Quaternion.Euler(0, Direct, 0);}private void Touch()//检测手势检测{if (Input.touchCount < 1)//触摸屏幕点小于1个{return;}else if (Input.touchCount == 1)//触摸屏幕为1{if(Input.GetTouch(0).phase == TouchPhase.Began)//开始滑动的点{BeginPos = Input.GetTouch(0).position;//给BeginPos赋值(开始滑动的点的坐标)}}if(Input.GetTouch(0).phase ==TouchPhase.Ended&&Input.GetTouch(0).phase != TouchPhase.Canceled)//滑动结束(手抬起)并且没有取消对触摸的追踪{Vector2 pos = Input.touches[0].position;//给pos赋值为滑动结束的坐标if (Mathf.Abs(BeginPos.x - pos.x) > Mathf.Abs(BeginPos.x - pos.y))//左右滑动的影响大于上下滑动{if (BeginPos.x > pos.x)//左滑{Direct -= 90;}else //右滑{Direct += 90;}}else//上下滑动影响大于左右{if (BeginPos.y < pos.y)//向上{float timer = 0;//设置跳跃间隔(防止出现连续跳)if (timer >= 2){transform.Translate(new Vector3(0, 1, 0) * Time.deltaTime * 150);}else{timer += Time.deltaTime;}}}}}
注释写的比较明确了
然后我说一下Mathf.Abs 是取绝对值的函数
然后添加给玩家即可
3.导入到手机
导入到手机即可运行了
我们会发现和神庙逃亡一样的游戏效果
左右滑动旋转 手机重力感应移动方向
我们也可以随着时间的变化 给变人物移动的速度
差不多就这么多
如果有什么问题 可以联系我qq:1149293885