吃鸡(遥杆)人物移动及相机跟随的实现
抽空做的一个小Demo,基本功能还是能实现的。
1.左下遥杆控制移动
2.右下区域遥杆控制人物转向及相机跟随转向
3.右上遥杆控制视野(相机角度)
项目下载:https://download.****.net/download/weixin_42438547/10741404
懒省事,基本能省事就省事了,物体都是拖拽。
照着拖就行了
左下遥杆
/// <summary>
/// 移动遥感协程
/// </summary>
/// <returns></returns>
IEnumerator Move()
{
while (Input.GetMouseButton(0))
{
print("鼠标落下");
//鼠标位置
Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
//偏移量
Vector3 offset = mousePos - center.transform.position;
//限制坐标
if (offset.magnitude > Range)
{
//偏移量=偏移量的.标准化*范围(标准化-即使变量值得大小更改为<系统默认的标准1>)
offset = offset.normalized * Range;
}
//赋值给小圆盘(摇杆)
centerObject.transform.position = center.transform.position + offset;
//赋值给玩家
PlayerObject.transform.position += new Vector3(offset.x / Range, 0, offset.y / Range) * Time.deltaTime * 5;
//设置角色的朝向(朝向当前坐标+摇杆偏移量)
// PlayerObject.transform.LookAt(new Vector3(transform.position.x + offset.x, PlayerObject.transform.position.y, PlayerObject.transform.position.z + offset.y));
//停留一帧,避免死循环
yield return null;
}
//摇杆回弹
//1.使摇杆坐标=圆盘坐标
centerObject.transform.position = center.transform.position;
//2.使坐标偏移量=0
centerObject.transform.localPosition = Vector2.zero;
}
方向遥感
/// <summary>
/// 方向遥感
/// </summary>
/// <returns></returns>
IEnumerator FX()
{
fxoffset = Camera.main.transform.localEulerAngles - transform.localEulerAngles;
while (true)
{
if(Input.GetMouseButton(0))
{
zx = true;
pos1 = Input.mousePosition;
if (pos2!=Vector3.zero)
{
transform.localEulerAngles += new Vector3(0,pos2.x - pos1.x, 0)*0.5f;
Camera.main.transform.RotateAround(new Vector3(transform.position.x, Camera.main.transform.position.y, transform.position.z), Vector3.down, (pos1.x - pos2.x)*0.5f);
}
pos2 = Input.mousePosition;
}
if(Input.GetMouseButtonUp(0))
{
offset = Camera.main.transform.position - transform.position;
pos2 = Vector3.zero;
zx = false;
}
yield return null;
}
}
视野遥感
/// <summary>
/// 视野遥感协程
/// </summary>
/// <returns></returns>
IEnumerator SYYG()
{
rot = Camera.main.transform.localEulerAngles;
pos = Camera.main.transform.position;
while (Input.GetMouseButton(0))
{
sy = true;
print("鼠标落下");
//鼠标位置
Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
//偏移量
Vector3 offset = mousePos - ShiYe.transform.position;
//限制坐标
if (offset.magnitude > Range)
{
//偏移量=偏移量的.标准化*范围(标准化-即使变量值得大小更改为<系统默认的标准1>)
offset = offset.normalized * Range;
}
//赋值给小圆盘(摇杆)
SY.transform.position = ShiYe.transform.position + offset;
//赋值给玩家
// PlayerObject.transform.position += new Vector3(offset.x / Range, 0, offset.y / Range) * Time.deltaTime * 5;
Camera.main.transform.localEulerAngles += new Vector3(-offset.y / Range, offset.x / Range, 0) * Time.deltaTime * 30;
//需要限制下视野范围
yield return null;
}
if (Input.GetMouseButtonUp(0))
{
sy = false;
Camera.main.transform.localEulerAngles = rot;
Camera.main.transform.position = pos;
}
//摇杆回弹
//1.使摇杆坐标=圆盘坐标
SY.transform.position = ShiYe.transform.position;
//2.使坐标偏移量=0
SY.transform.localPosition = Vector2.zero;
}
}
项目下载:https://download.****.net/download/weixin_42438547/10741404