unity制作类似神庙逃亡控制效果(手势检测)

mac2025-02-26  28

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

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

最新回复(0)