前几天突然有兴趣了解一下手游相关的开发 刚开始完全没有头绪,然后慢慢了解了一些知识后,决定尝试写一个类似于神庙逃亡的游戏效果
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