Unity通过物理带动实现传输带运输物品

前言:遇到个听起来挺简单的需求,就是实现一个传输带,传输物品。但细想发现如果是直接设置物品的速度,或者通过设置父物体的方式带动物品,都挺不好,关联性太强。最后选择用到一个很实用的API,   Rigidbody.MovePosition

public void MovePosition (Vector3 position);

移动刚体并遵守插值设置。启用刚体插值时,Rigidbody.MovePosition可在帧之间创建平滑过渡。Unity在每个FixedUpdate调用中移动一个刚体。

我发现这个API可以实现放置一个物品在平台上,平台移动,物品也可以跟着移动,非常的实用。

接着就是思考无限运输物品的传输带怎么去做,这个可以参考循环滚动背景的思路,直接看视频。

这里是有效传输的部分

我们看一下传输效果:

我们在Scene窗口隐藏平台的Mesh,看一下核心的运作原理,

我们在移动平台的过程中,要动态更改两个BoxCollider的大小,这样就能保证传输平台一直有效。

场景布局:

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Test : MonoBehaviour
{[Header("速度")]public float speed;private int currDir=1;private Transform[] beltsTrans;private BoxCollider[] beltsCollis;private Rigidbody[] beltsRbs;private Vector3 forwardRunBehindPos;private Vector3 behindPos;private float length;private float length2;protected bool init = false;protected void Awake(){beltsTrans = new Transform[2];beltsCollis = new BoxCollider[2];beltsRbs = new Rigidbody[2];//实例化新传送带beltsTrans[0] = transform.Find("传送带");beltsTrans[1] = Instantiate(beltsTrans[0].gameObject, transform).transform;//获取组件for (int i = 0; i < beltsTrans.Length; i++){beltsCollis[i] = beltsTrans[i].GetComponent<BoxCollider>();beltsRbs[i] = beltsTrans[i].GetComponent<Rigidbody>();}//计算长度length = beltsCollis[0].size.z * beltsTrans[0].localScale.z * transform.localScale.z;length2 = length * 2;//偏移第二个传送带beltsTrans[1].position = beltsTrans[1].position - beltsTrans[1].forward * length;//起点位置forwardRunBehindPos = beltsTrans[1].position;behindPos = forwardRunBehindPos;init = true;}protected void FixedUpdate(){if (!init) return;Move();}float dis;public void Move(){for (int i = 0; i < beltsTrans.Length; i++){//移动beltsRbs[i].MovePosition(beltsTrans[i].position + beltsTrans[i].forward * speed * currDir * Time.fixedDeltaTime);//计算距离起始点距离dis = Vector3.Distance(beltsTrans[i].position, behindPos);//Collider中心点beltsCollis[i].center = new Vector3(0, 0, Mathf.Lerp(0.5f * currDir, -0.5f * currDir, (dis / length2)));//Collider缩放if (dis<=length){beltsCollis[i].size = new Vector3(1, 1, Mathf.Lerp(0 , 1 , (dis / length)));}else if (dis > length && dis < length2){beltsCollis[i].size = new Vector3(1, 1, Mathf.Lerp(1 , 0 , ((dis - length )/ length)));}//返回起点else if(dis >= length2){beltsTrans[i].position = behindPos;}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue+OpenLayers7入门到实战:OpenLayers7加载天地图

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章介绍如何使用OpenLayers7在地图上加载天地图. 天地图瓦片访问需要先到天地图申请key。天地图官网链接 本文使用xyz方式加载天地图,并且介绍如何加载xyz格式天地图url,包括天地图纯底图(无标记)、卫星影像图…

SpringMVC入门学习(十)----mvc:annotation-driven标签介绍

目录 1、关于mvc:annotation-driven作用2、mvc:annotation-driven在什么时候必须配置3、关于mvc:annotation-driven配合使用的几种情况 回到顶部 1、关于mvc:annotation-driven作用 [1]、<mvc:annotation-driven /> 会自动向容器中注册如下组件&#xff0c;并且会代替…

0101appscan安装与使用入门-扫描-信息收集

1 简介 HCL AppScan&#xff08;原IBM Security AppScan&#xff09;是原IBM的Rational软件部门的一组网络安全测试和监控工具&#xff0c;2019年被HCL技术公司收购。AppScan旨在在开发过程中对Web应用程序的安全漏洞进行测试[1]。该产品学习每个应用程序的行为&#xff0c;无…

【蓝桥杯51单片机入门记录】LED

目录 一、基础 &#xff08;1&#xff09;新建工程 &#xff08;2&#xff09;编写前准备 二、LED &#xff08;1&#xff09;点亮LED灯 &#xff08;2&#xff09;LED闪烁 延时函数的生成&#xff08;stc-isp中生成&#xff09; 实现 &#xff08;3&#xff09;流水灯…

MG7050HAN 基于声表的差分多输出 晶体振荡器 (HCSL)

基于MG7050 HAN的声表差分多输出晶体振荡器(HCSL)&#xff0c;采用两路或四路差分HCSL&#xff08;高速电流驱动逻辑&#xff09;输出&#xff0c;可以减少外部扇出缓冲区&#xff0c;特别适用于需要超低抖动、高频率范围内稳定工作的应用场合。其输出特性曲线超低抖动&#xf…

降维(Dimensionality Reduction)

一、动机一&#xff1a;数据压缩 这节我将开始谈论第二种类型的无监督学习问题&#xff0c;称为降维。有几个原因使我们可能想要做降维&#xff0c;其一是数据压缩&#xff0c;它不仅允许我们压缩数据使用较少的计算机内存或磁盘空间&#xff0c;而且它可以加快我们的学习算法。…

90年代的黄河路,大家都在用什么方式互相联络?

1992 年的上海&#xff0c;霓虹养眼&#xff0c;万花如海… 新年伊始&#xff0c;一部《繁花》爆火出圈&#xff0c;带观众穿越回了那个灯红酒绿的上海。90 年代的黄河路遍地是机会&#xff0c;商业战场上&#xff0c;信息成了最宝贵的财富&#xff0c;谁能获得最真实有用的资讯…

Python学习之路-DRF基础:视图

Python学习之路-DRF基础:视图 视图概览 简介 REST framework 提供了众多的通用视图基类与扩展类&#xff0c;以简化视图的编写。 视图的继承关系 视图的方法与属性 视图说明 两个基类 APIView 简介 rest_framework.views.APIView APIView是REST framework提供的所有视…

微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)

客户端流程 客户端心跳与实例往服务端注册

vue3.0中从proxy中取值

使用vue3.0时&#xff0c;因为底层是使用proxy进行代理的所以当我们打印一些值的时候是proxy代理之后的&#xff0c;是Proxy 对象&#xff0c;Proxy对象里边的[[Target]]才是真实的对象。也是我们需要的 第一种获取target值的方式&#xff1a; import { toRaw } from vue; le…

openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c

文章目录 openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c概述学到的知识点笔记PEM证书可以拼接实验 pkcs12 - pkwrite.c用win10的证书管理器安装P12证书是成功的END openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c 概述 openssl3.2 - 官方demo学习 - 索引贴 上次PKCS12的…

大数据 - Spark系列《一》- 分区 partition数目设置详解

目录 &#x1f436;3.2.1 分区过程 &#x1f436;3.2.2 SplitSize计算和分区个数计算 &#x1f436;3.2.3 Partition的数目设置 1. &#x1f959;对于数据读入阶段&#xff0c;输入文件被划分为多少个InputSplit就会需要多少初始task. 2. &#x1f959;对于转换算子产生的…

中国文化之光:微博数据的探索与可视化分析

大家好&#xff0c;我是八块腹肌的小胖 下面我们针对主题“中国文化”相关的微博数据进行爬取 使用LDA、情感分析、情感演化、词云等可视化操作进行相关的展示 1、导包 第一步我们开始导包工作 下面这段代码&#xff0c;首先&#xff0c;pandas被请来了&#xff0c;因为它是…

2024年美赛 (A题MCM)| 海蟒鳗鱼 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看美赛的A题&#xff01; 完整内容可以在文章末尾领…

Camunda流程引擎概念

&#x1f496;专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据&#xff0c;完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧&#x1f618; &#x1f496;流程定义 …

服务器C盘突然满了,是什么问题

随着时代的发展、互联网的普及&#xff0c;加上近几年云计算服务的诞生以及大规模普及&#xff0c;对于服务器的使用目前是非常普遍的&#xff0c;用户运维的主要对象一般也主要是服务器方面。在日常使用服务器的过程中&#xff0c;我们也会遇到各式各样的问题。最近就有遇到用…

【2024美赛C题】网球大佬带你无背景压力分析解题思路!

2024美赛数学建模c题思路分享 加群可以享受定制等更多服务&#xff0c;或者搜索B站&#xff1a;数模洛凌寺 联络组织企鹅&#xff1a;936670395 以下是C题老师的解题思路&#xff08;企鹅内还会随时更新文档&#xff09;&#xff1a; 1背景介绍 2024MCM问题C&#xff1a;网…

LeetCode:42. 接雨水

42. 接雨水 1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果 1&#xff09;题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height …

强化学习 - Monte Carlo Tree Search (MCTS)

什么是机器学习 强化学习中的Monte Carlo Tree Search (MCTS) 是一种用于决策制定和搜索的算法&#xff0c;特别在不确定环境下表现出色。 1. 强化学习背景 在强化学习中&#xff0c;一个智能体通过与环境的交互学习&#xff0c;以便在某个任务上获得最大的奖励。MCTS是一种…

2024美国大学生数学建模美赛选题建议+初步分析

总的来说&#xff0c;去年算是美赛环境题元年&#xff0c;去年的开放度是较高的&#xff0c;今年每种赛题类型相对而言平均了起来 提示&#xff1a;DS C君认为的难度&#xff1a;E<BCF<AD&#xff0c;开放度&#xff1a;DBCE<A<F。 以下为A-F题选题建议及初步分析…