live2d碰撞_Unity Live2D 模型(与UI)拖拽功能 实现源码
环境(其实没什么关系):
Unity 2019.4.0f1
CubismSdkForUnity-4-r.1
阅读这篇文章可以让你把模型丢到自己想丢的地方上
首先不用找官方给你整理好的拖拽脚本了,这种功能还是要自己去实现的!!
开始:
直接在模型根部挂一个实现拖拽功能的脚本
说到拖拽 自然就是通过鼠标输入来改变物体的坐标
我们要拿到两个值:
1.鼠标输入
2.模型坐标(附属物件坐标)
设计计算公式:
鼠标最初点到模型上的坐标和模型的中心目标会形成一个差值
如若不设置差值,物体的中心则跟随鼠标输入的坐标移动,这个是什么效果试试就懂了,总之不太好看
差值计算公式=物体中心坐标-鼠标输入坐标
移动的目的地=鼠标输入坐标+差值
世界坐标与屏幕坐标的转换可以参考其他文档
在此文档就随便添几笔以带过
附上代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Drag : MonoBehaviour
{
//鼠标输入
private Vector3 _Mouth;
//目标
private Vector3 _Target;
//差值
private Vector3 offect;
//当前 物件 位置
private Transform _Transform;
//附件UI
public UnityEngine.UI.Text _Text;
private Vector3 Text_offect;
public UnityEngine.UI.Image _Image;
private Vector3 Image_offect;
void Start()
{
_Transform = transform;
//固定值 这个自己调试
//Text_offect = new Vector3(140, 150, 0);
//Image_offect = new Vector3(110, 150, 0);
}
//协程
private IEnumerator OnMouseDown()
{
_Mouth = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _Transform.position.z + 10f);
//差值计算公式=物体中心坐标-鼠标输入坐标
offect = _Transform.position - Camera.main.ScreenToWorldPoint(_Mouth);
Text_offect = _Text.transform.position - _Mouth;
Image_offect = _Image.transform.position - _Mouth;
while (Input.GetMouseButton(0))
{
_Mouth = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _Transform.position.z+10f);
//目标=差值+鼠标输入
_Target = Camera.main.ScreenToWorldPoint(_Mouth) + offect;
_Transform.position = _Target;
//让显示的文字和文本框也跟着移动
_Text.transform.position = _Mouth + Text_offect;
_Image.transform.position =_Mouth + Image_offect;
//固定值对应公式
// _Text.transform.position = Camera.main.WorldToScreenPoint(_Target) + Text_offect;
// _Image.transform.position = Camera.main.WorldToScreenPoint(_Target) + Image_offect;
yield return new WaitForFixedUpdate();
}
}
}
这里也添加了UI物体的拖动,如不需要可以直接注释掉
建议用固定值(这样就不用自己绞尽脑汁地思考公式了!)
然后在模型上添加一个碰撞脚本(随便哪个collider 2D) 鼠标方可在上面点击 (不加就点不了)
关于世界坐标与屏幕坐标
一般用Camera.main中两个方法
WorldToScreenPoint:世界转屏幕 坐标点
ScreenToWorldPoint:屏幕转世界 坐标点
传入Vector3 对象
简单区分:
游戏物件位于世界上
UI位于屏幕上
鼠标点击计算的是屏幕坐标 要拖动游戏物体则必须转换为世界坐标使用
然后试试就可以随便操作了
提醒一下:如果你没处理好LookAt 拖动模型的话就会……
回到目录:传送门
live2d碰撞_Unity Live2D 模型(与UI)拖拽功能 实现源码相关推荐
- 2018年首篇,带大家一起学习视图拖拽功能的源码
今天的快讯我们对2017年的重大事件进行一下回顾吧. 乐视事件 回溯乐视的2017,"眼看他起朱楼,眼看他宴宾客,眼看他楼塌了".乐视历经了来自融创中国百亿融资.高层相继离职.裁员 ...
- jQuery UI 拖拽功能
原文地址:http://www.cnblogs.com/holbrook/archive/2012/03/13/2394111.html JQuery UI是JQuery官方支持的WebUI 代码库, ...
- java 拖拽生成_JAVA UI 拖拽功能
java GUI拖拽功能是很实用也相对高级一些的功能. 有一小部分的GUI控件支持 他们有dragEnabled属性.这些JComponent包括: javax.swing.JColorChooser ...
- OA会议管理系统之我的会议(会议排座可拖拽座位附源码)
目录 一.前言 1.导读 二.我的会议功能实现 1.功能介绍 2.功能分析 3.功能实现 3.1.前期准备 3.2.dao层编写 3.3.jsp页面搭建 3.4.Web层编写 4.案例展示 一.前言 ...
- Qt工作笔记-在QTreeView上实现模型数据的拖拽
运行截图如下: 逻辑是: 1.QTreeView开发拖拽功能. 2.在自定义模型中重写 flags(const QModelIndex &index) const mimeData(const ...
- jquery ui 拖拽
Query UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量的 ...
- JQuery UI的拖拽功能
JQuery UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量 ...
- Element UI表格行拖拽功能
效果 <template><div class="hello"><!-- 拖拽功能必须绑定row-key唯一 --><el-tablere ...
- css元素可拖动,使用css-transform实现更好的拖拽功能
拖拽功能是目前网页上一种非常常见的功能,例如"登录弹窗"的拖拽.本文将使用transform来实现这一功能. 一.拖拽的用户行为分析与原理解析 二.代码实现 三.总结 本文所涉及的 ...
- 如何玩转sortablejs-vuedraggable实现表单嵌套拖拽功能
最近几天在研究有关vue实现拖拽的功能,不过跟一般的拖拽排序有点不同,这个需求可能出现多行多列嵌套的表单元素,数据也是递归形式的出现.我也是在vuedraggable的基础上扩展实现的,如何想了解更多 ...
最新文章
- Python-OpenCV 处理图像(五):图像中边界和轮廓检测
- 黄聪:DEDECMS系统栏目、文章页面、分页面伪静态和域名301重定向详细方法
- 斯坦福cs161算法考试的cheat sheet!!!十分重要!!!
- iOS c语言 基本运算符
- 利用bootstrap插件设置时间
- PHP、C#、通用的DES加密
- idea插件导出_Intellij IDEA 中我一直在用的几个插件
- gin ajax 获取请求参数,gin请求参数处理
- 最简单的SpringMVC + Maven配置
- 通信原理眼图画法_通信原理课程总结(二)
- java数学系统总结与展望_总结与展望
- 为什么觉得今年工作特别难找?
- 《版式设计——日本平面设计师参考手册》—第1章置入其他格式的文件
- Redis设计与实现-监视器
- yum install gcc报错Error: Package: glibc-2.17-260.el7_6.6.i686 (updates) Requires: glibc-common = 2.17
- 使用 DUET/REFIND 方法将 NVME 添加为引导驱动器
- 如何选购电风扇,一本电风扇选购攻略都在这里!
- 青橙 GO M3 3G手机(珍珠黑)WCDMA/GSM 双卡双待 360特供机--高通胶水双核,A5老架构,内存缩水,,,强烈要求降价...
- 谷歌浏览器上传图片和图片另存为就卡死崩溃解决方案
- 热爱生命 - 汪国真
热门文章
- 海康ehome协议分析(3):PTZ云台控制
- 莫烦强化学习-Q Learning
- 伍德里奇计量经济学第六章计算机答案,伍德里奇计量经济学导论计算机习题第六章第13题c_6.13...
- 西门子224XP源码,包括pcb,原理图,224xp源码
- Vue SSR服务端渲染 vue预渲染
- 阵列信号处理及matlab实现,《阵列信号处理的理论和应用》(pdf+程序)
- 【爬虫】爬取当当网的图书信息
- threejs添加天空盒
- 服务器器ip的A段B段C段是什么意思有什么意义
- eclipse和myeclipse集成Xjad