unity 双摇杆控制教程(方向和旋转)
使用工具:
unity 2021.2.8f1c1
visual studio 2022
插件:
Joystick Pack
准备工作:
1.新建一个plane(作为地面),一个胶囊体(作为玩家),并在胶囊体上添加刚体组件,限制XYZ三轴旋转
2.新建一个画布Canvas(用于显示摇杆),更改UI Scale Mode的模式为
Sxale With Screen Size,设置好屏幕分辨率大小(调整画布大小)
3.将项目文件夹下的Joystick Pack的Prefabs(摇杆预制件),拖到Hierarchy窗口下的Canvas下,并调整好位置和摇杆大小,我这里使用 Variable Joystick
我这里进行了重命名,方便区分
4.新建一个脚本,用于控制玩家移动和旋转
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMR : MonoBehaviour
{
? ? public Joystick moveStick;//玩家移动摇杆
? ? public Joystick rotationStick;//玩家旋转摇杆
? ? Rigidbody myRigidbody;//玩家刚体
? ? public float speed = 6f;//玩家移动速度
? ? public float turnspeed = 10f;//玩家旋转速度
? ? Vector3 movement; ?//玩家移动三维坐标
? ? private void Awake()
? ? {
? ? ? ? myRigidbody = GetComponent<Rigidbody>();//获取刚体组件
? ? }
? ? void Update()
? ? {
? ? ? ? //玩家移动实现
? ? ? ? float mh = moveStick.Horizontal;
? ? ? ? float mv = moveStick.Vertical;
? ? ? ? Move(mh, mv);
? ? ? ? //玩家旋转实现
? ? ? ? float rh = rotationStick.Horizontal;
? ? ? ? float rv = rotationStick.Vertical;
? ? ? ? Rotating(rh, rv);
? ? }
? ? //玩家移动控制
? ? public void Move(float h, float v)
? ? {
? ? ? ? //根据输入的虚拟轴值设置变量
? ? ? ? movement.Set(h, 0f, v);
? ? ? ? // 单位化位移向量并根据速度得到需要移动的向量
? ? ? ? movement = movement.normalized * speed * Time.deltaTime;
? ? ? ? // 根据移动向量 移动玩家到相应位置
? ? ? ? myRigidbody.MovePosition(transform.position + movement);
? ? }
? ? //玩家旋转控制
? ? public void Rotating(float h, float v)
? ? {
? ? ? ? //获取方向
? ? ? ? Vector3 dir = new Vector3(h, 0, v);
? ? ? ? //将方向转换为四元数
? ? ? ? Quaternion quaDir = Quaternion.LookRotation(dir, Vector3.up);
? ? ? ? //缓慢转动到目标点
? ? ? ? transform.rotation = Quaternion.Lerp(transform.rotation, quaDir, Time.fixedDeltaTime * turnspeed);
? ? }
}
5.将脚本挂载到胶囊体(玩家),并绑定摇杆
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!