当前位置: 首页 > news >正文

unity 多个模型或物体无限循环拖拽 类似无限列表循环

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ModelAnimal : MonoBehaviour
{
//需滑动的物体
public GameObject m_objA; //音乐
public GameObject m_objB; //电话
public GameObject m_objC; //导航
public GameObject m_objD; //设置
public GameObject m_objE; //健康
//记录鼠标滑动
Vector2 lastPos;//鼠标上次位置
Vector2 currPos;//鼠标当前位置
Vector2 offset;//两次位置的偏移值
//实例化
public static ModelAnimal instance;
private void Awake()
{
instance = this;
}
void Update()
{

}
/// <summary>
/// 拖拽事件
/// </summary>
public void DragModel()
{if (Input.GetMouseButtonDown(0)){lastPos = Input.mousePosition;}if (Input.GetMouseButtonUp(0)){currPos = Input.mousePosition;offset = currPos - lastPos;DoMatch(offset);}
}
/// <summary>
/// 鼠标左滑事件
/// </summary>
public void AnimatorMoveLeft()
{GameObject[] objArry = { m_objA, m_objB, m_objC, m_objD, m_objE };Vector3[] vertices = new Vector3[] //顶点列表的变量{m_objA.transform.localPosition,  //加入A点坐标(1.1, -1.3, 6.7)m_objB.transform.localPosition,  //加入B点坐标(-4.2, -3.2, 16.8)m_objC.transform.localPosition,  //加入C点坐标(-15.2, -3.0, 17.7)m_objD.transform.localPosition,  //加入D点坐标(-23.3, -1.2, 5.1)m_objE.transform.localPosition,  //加入E点坐标(-10.1, -0.3, -3.9)};Vector3 finalPos = objArry[objArry.Length - 1].transform.localPosition;for (int i = objArry.Length - 1; i >= 0; i--){if (1 <= i){objArry[i].transform.localPosition = objArry[i - 1].transform.localPosition;}else if (0 == i){objArry[i].transform.localPosition = finalPos;}}
}
/// <summary>
/// 鼠标右滑事件
/// </summary>
public void AnimatorMoveRight()
{GameObject[] objArry = { m_objA, m_objB, m_objC, m_objD, m_objE };Vector3[] vertices = new Vector3[] //顶点列表的变量{m_objA.transform.localPosition,  //加入A点坐标(1.1, -1.3, 6.7)m_objB.transform.localPosition,  //加入B点坐标(-4.2, -3.2, 16.8)m_objC.transform.localPosition,  //加入C点坐标(-15.2, -3.0, 17.7)m_objD.transform.localPosition,  //加入D点坐标(-23.3, -1.2, 5.1)m_objE.transform.localPosition,  //加入E点坐标(-10.1, -0.3, -3.9)};Vector3 Lastpos = objArry[0].transform.localPosition;for (int i = 0; i <= objArry.Length - 1; i++){if (i < objArry.Length - 1){objArry[i].transform.localPosition = objArry[i + 1].transform.localPosition;}else if (i == objArry.Length - 1){objArry[i].transform.localPosition = Lastpos;}}
}
/// <summary>
/// 移动方向判断
/// </summary>
/// <param name="_offset"></param>
void DoMatch(Vector2 _offset)
{//水平移动if (Mathf.Abs(offset.x) > Mathf.Abs(offset.y)){if (offset.x > 0){Debug.Log("右");AnimatorMoveRight();}else{Debug.Log("左");AnimatorMoveLeft();}}else//垂直移动{if (offset.y > 0){Debug.Log("上");}else{Debug.Log("下");}}
}

}

http://www.lryc.cn/news/19034.html

相关文章:

  • GroupDocs.Merger for Java
  • 04--WXML
  • 一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (五)
  • 每月一书(202302)《狂飙》
  • wsl2 docker 安装
  • 极光笔记 | 埋点体系建设与实施方法论
  • SpringMVC中的各注解类理解
  • DNF搭建服务器服务端搭建教程
  • 【论文简述】Learning Optical Flow with Adaptive Graph Reasoning(AAAI 2022)
  • qt QCustomPlot学习
  • 【HDFS】FsDatasetImpl系列文章(七):finalizeBlock方法和unfinalizeBlock方法
  • 测试部门来了个99年的卷王之王,老油条感叹真干不过,但是...
  • CSS 网页动画【快速掌握知识点】
  • 电脑技巧:分享六个非常实用的资源网站
  • 【Java基础 下】 027 -- 异常、File、综合案例
  • 教师管理系统的设计与实现
  • 【Java】线程使用方式
  • 零基础想转行学习Python,该如何学习,有学习路线分享吗?(2023年给初学者的建议)
  • IDEA Maven install Failed to execute goal org.apache.maven.plugins异常处理
  • TensorFlow-Keras - FM、WideAndDeep、DeepFM、DeepFwFM、DeepFmFM 理论与实战
  • Java浅析电信数据采集
  • 那些开发中需要遵守的产研开发规范
  • 一文深入分析-内核并发消杀器(KCSAN)
  • Java学习-IO流-字符缓冲流
  • Java的一维数组遍历、求最值、冒泡排序
  • Free for photo container detection, container damage detect PaaS
  • 【golang】【源代码】reflect.DeepEqual(x,y)函数
  • Python实现定时执行脚本(4)
  • 量子力学(4) 全同粒子
  • 13、Swin Transformer: Hierarchical Vision Transformer using Shifted Windows