Unity 制作虚拟遥感操控人物旋转移动实现+案例 | 您所在的位置:网站首页 › unity如何控制物体移动 › Unity 制作虚拟遥感操控人物旋转移动实现+案例 |
效果图
角色旋转原理,人物z轴对用遥感y轴,形成一种映射。人物提供一个自身旋转转的方法,遥感可以计算出角度,得出角度之后把值付给人物,使人物旋转 代码我大部分都标记了,在这就不多解释了,自行看代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class EEasyTouch : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { public void OnBeginDrag(PointerEventData eventData) { //开始拖拽时显示 group.alpha = 1; //结合我上一篇FSM框架的应用 很简单 StoneCtrl.Instance.ChangeStoneAnimation(StoneCtrl.StoneStates.StoneWalk); } public void OnDrag(PointerEventData eventData) { Vector2 deltaPos = eventData.position - orignPos; float deltaDistance = Vector3.Distance(eventData.position, orignPos); //遥感在大圆内 if (deltaDistance //圆外 遥感位置在大圆边上 //delta的单位向量*半径+圆心初始位置得出在大圆边境上的位置 transform.position = deltaPos.normalized * radius + orignPos; } //遥感xy轴对应 stone的xz 形成一种映射 使stone旋转 //求出弧度 //为什么要用tan-----去看三角函数曲线,tan对应的是一个值,sincos可能对应多个值 float tmpAngle = Mathf.Atan2(deltaPos.y, deltaPos.x); tmpAngle = Mathf.Rad2Deg * tmpAngle; //Debug.Log("tmpAngle====" + tmpAngle); Vector3 tmpEuler = transform.localEulerAngles; tmpEuler.z = tmpAngle; //改变z值,使其旋转 transform.localEulerAngles = tmpEuler; //外界提供Stone旋转方法 StoneCtrl.Instance.RotatePlayer(90 - tmpAngle); } public void OnEndDrag(PointerEventData eventData) { //结束拖拽隐藏遥感 group.alpha = 0; //回归原位 transform.position = orignPos; StoneCtrl.Instance.ChangeStoneAnimation(StoneCtrl.StoneStates.StoneIdle); } //大小 float smallSize; float bigSize; //活动半径 float radius; //遥感初始位置 Vector2 orignPos; CanvasGroup group; private void Start() { group = GetComponent(); //没有点击时 把遥感隐藏 group.alpha = 0; smallSize = ((RectTransform)transform).sizeDelta.x * 0.5f; bigSize = ((RectTransform)transform.parent).sizeDelta.x * 0.5f; radius = bigSize - smallSize; //记录初始位置 orignPos =transform.position; } }StoneCtrl提供一个旋转自身方法 public void RotatePlayer(float angle) { Vector3 tmpAngle = transform.localEulerAngles; tmpAngle.y = angle; transform.localEulerAngles = tmpAngle; } |
CopyRight 2018-2019 实验室设备网 版权所有 |