效果图
【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 <= radius){//圆内 遥感位置=鼠标位置transform.position = eventData.position;}//在圆外else{//圆外 遥感位置在大圆边上//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
提供一个旋转自身方法
public void RotatePlayer(float angle){Vector3 tmpAngle = transform.localEulerAngles;tmpAngle.y = angle;transform.localEulerAngles = tmpAngle;}
- 虚拟化架构KVM和XEN对比
- 关于著名音乐制作人的介绍 著名音乐制作人
- 桌面虚拟现实系统是一种以计算机为基础,基于虚拟现实技术的挖掘机模拟操作.pdf
- [亲测可用]申请虚拟VISA卡ONEKEY保姆级教程/开通GPT-Plus
- uboot的虚拟地址映射学习
- 【操作系统】虚拟内存相关分段分页页面置换算法
- 基于Cocos2d-x3.2的虚拟摇杆实现及操控角色移动
- 【html5手游开发】虚拟摇杆及虚拟按键的开发
- 使用Fomepay虚拟visa卡绑定chatgpt
- 一篇文章学会Apple ID注册/绑定虚拟VISA卡使用Apple pay