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

unity2d Ugui--Image城市道路汽车行驶

目录

1.车辆生成与回收

2.路径点控制

3.车辆控制


1.车辆生成与回收
using System.Collections.Generic;
using UnityEngine;public class RoadContr : MonoBehaviour
{public WayPoint[] wayPoints; //出生点public Transform pare;[SerializeField]private Car[] fabCar;public Dictionary<int, Queue<Car>> dic_car = new();private int carNum = 0;private void OnEnable(){InvokeRepeating("CarCreate", 1, 1);}private void CarCreate(){if (fabCar.Length<1) { return; }if (carNum < 30){carNum++;Car car = Instantiate(fabCar[Random.Range(0, fabCar.Length)], pare);WayPoint way = wayPoints[Random.Range(0, wayPoints.Length)];car.rect.anchoredPosition = way.rect.anchoredPosition;car.Init(way,this);}else{CancelInvoke("CarCreate");}}public void CarRecycle(int index , Car car) {if (!dic_car.ContainsKey(index)){dic_car[index] = new Queue<Car>();}if (dic_car[index].Count > 10){Destroy(car.gameObject);}else{car.gameObject.SetActive(false);dic_car[index].Enqueue(car);}CreateOneCar();}private void CreateOneCar(){Car car = null;int ran = Random.Range(0, fabCar.Length);if (!dic_car.ContainsKey(ran)){dic_car[ran] = new Queue<Car>();}if (dic_car[ran].Count > 0){car = dic_car[ran].Dequeue();}else { car = Instantiate(fabCar[ran], pare);}WayPoint way = wayPoints[Random.Range(0, wayPoints.Length)];car.rect.anchoredPosition = way.rect.anchoredPosition;car.gameObject.SetActive(true);car.Init(way, this);}
}
2.路径点控制
using System.Collections.Generic;
using UnityEngine;public class WayPoint : MonoBehaviour
{public bool isDestroy;public RectTransform rect;[Header("0上1下2左3右")]public int curDirect = -1;[Header("下一路径点")]public List<WayPoint> nextWayPoints_1;/// <summary>/// 获取下一路径点/// </summary>public WayPoint GetNextWayPoint(){if (nextWayPoints_1.Count == 1){return nextWayPoints_1[0];}else{return nextWayPoints_1[Random.value < 0.5 ? 0 : 1];}}}
3.车辆控制
using UnityEngine;
using UnityEngine.UI;public class Car : MonoBehaviour
{[SerializeField] private Image carImg;//0:scaleX 上:1 右:-1 、1: scaleX 下1 左-1[SerializeField] private Sprite[] carSprites;[SerializeField] private int carIndex;public RectTransform rect;[SerializeField] private WayPoint curWay;       // 当前路径点[SerializeField] private WayPoint nextWay;       // 下一路径点[SerializeField] private float speed;[SerializeField]private int direction = -1;private RoadContr road;public void Init(WayPoint cur_way,RoadContr _road){curWay = cur_way;road = _road;direction = curWay.curDirect;nextWay = curWay.GetNextWayPoint();UpdateCarImage();}private void Update(){if (!gameObject.activeInHierarchy) { return; }if (Vector2.Distance(rect.anchoredPosition, nextWay.rect.anchoredPosition) <= 0.1f){// 到达if (nextWay.isDestroy){//回收road.CarRecycle(carIndex, this);return;}else{//获取新的下一个路径点Init(nextWay, road);}}else { Vector2 newPosition = Vector2.MoveTowards(rect.anchoredPosition, nextWay.rect.anchoredPosition, speed * Time.deltaTime);rect.anchoredPosition = newPosition;}}private Vector3 dir_scale = new(-1, 1, 1);private void UpdateCarImage(){if (direction == 0 || direction == 1){carImg.rectTransform.localScale = dir_scale;}else {carImg.rectTransform.localScale = Vector3.one;}if (direction == 0 || direction == 2){carImg.sprite = carSprites[0];}else{carImg.sprite = carSprites[1];}}
}

相关文章:

unity2d Ugui--Image城市道路汽车行驶

目录 1.车辆生成与回收 2.路径点控制 3.车辆控制 1.车辆生成与回收 using System.Collections.Generic; using UnityEngine;public class RoadContr : MonoBehaviour {public WayPoint[] wayPoints; //出生点public Transform pare;[SerializeField]private Car[] fabCar;pu…...

【深度学习】【Prompt】使用GPT的一些提示词

f翻译论文用这个提示词&#xff1a; # 翻译规则## 翻译规则1 请在翻译这篇学术论文时&#xff0c;严格保留所有专业术语的原始英文表述&#xff0c;不要尝试将它们翻译成中文&#xff0c;而不是专业术语的部分&#xff0c;需要翻译为中文。保持所有文章引用格式和内容的完整无…...

如何在centos中和windows server中找到挖矿木马和消灭挖矿木马

在 CentOS 和 Windows Server 中查找和消灭挖矿木马涉及多个步骤&#xff0c;包括检测、清理和预防。以下是具体的步骤和命令。 在 CentOS 中查找和消灭挖矿木马 步骤 1&#xff1a;检测木马 检查异常进程&#xff1a; ps aux | grep -E miner|cryptonight|xmrig查找进程列表…...

Slice用法举例Python

Slice用法举例Python 在Python中&#xff0c;slice&#xff08;切片&#xff09;是一个强大的工具&#xff0c;用于处理序列类型的数据&#xff0c;如列表、元组、字符串等。slice提供了一种简洁而高效的方式来获取序列的子集或修改序列的某些部分。下面&#xff0c;我们将从四…...

响应式网页开发方法与实践

随着移动设备的普及和多样化&#xff0c;响应式网页开发已成为现代网页设计的主流趋势。响应式网页&#xff08;Responsive Web Design, RWD&#xff09;是一种网页设计技术&#xff0c;其核心思想是通过灵活的布局和媒体查询&#xff0c;使网页能够适应不同设备和屏幕尺寸&…...

feedparser - Python 解析Atom和RSSfeed

文章目录 一、关于 feedparser二、安装三、关于文档及构建四、测试五、常见RSS元素访问常见 Channel 元素访问常用项目元素 六、常见Atom元素访问常用feed元素访问公共入口元素 七、获取Atom元素的详细信息Feed元素的详细信息 八、测试元素是否存在九、其他功能 & 文档高级…...

ARM32开发--IIC时钟案例

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 需求 开发流程 移植驱动 修改I2C实现 测试功能 总结 前言 在现代嵌入式系统开发中&#xff0c;移植外设驱动并测试其功能是一项常见的任务。本次学习的目标是掌握移植方法和测试方法&#xff0c;以实现对开…...

[深度学习]基于C++和onnxruntime部署yolov10的onnx模型

基于C和ONNX Runtime部署YOLOv10的ONNX模型&#xff0c;可以遵循以下步骤&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保已经下载后指定版本opencv和onnruntime的C库。 模型转换&#xff1a;按照官方源码&#xff1a;https://github.com/THU-MIG/yolov10 安装好yolov…...

Spring-事件

Java 事件/监听器编程模型 设计模式-观察者模式的拓展 可观察者对象(消息发送者) Java.util.Observalbe观察者 java.util.Observer 标准化接口(标记接口) 事件对象 java.util.EventObject事件监听器 java.util.EventListener public class ObserverDemo {public static vo…...

delmia的工序设置

process的设置需要在workcell sequuencing里面去设置...

【JavaEE精炼宝库】多线程(5)单例模式 | 指令重排序 | 阻塞队列

目录 一、单例模式&#xff1a; 1.1 饿汉模式&#xff1a; 1.2 懒汉模式&#xff1a; 1.2.1 线程安全的懒汉模式&#xff1a; 1.2.2 线程安全的懒汉模式的优化&#xff1a; 二、指令重排序 三、阻塞队列 3.1 阻塞队列的概念&#xff1a; 3.2 生产者消费者模型&#xf…...

[图解]《分析模式》漫谈03-Party是什么

1 00:00:00,790 --> 00:00:03,930 今天我们来看一下&#xff0c;Party是什么 2 00:00:05,710 --> 00:00:07,470 当然我们这里说的不是政治的 3 00:00:07,880 --> 00:00:08,350 Party 4 00:00:09,230 --> 00:00:11,110 是《分析模式》里面的一个用词 5 00:00:14…...

【Numpy】一文向您详细介绍 np.abs()

【Numpy】一文向您详细介绍 np.abs() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…...

【AI绘画】Stable Diffusion 3开源

Open Release of Stable Diffusion 3 Medium 主要内容 Stable Diffusion 3是Stability AI目前为止最先进的文本转图像开放源代码算法。 这款模型的小巧设计使其完美适合用于消费级PC和笔记本电脑&#xff0c;以及企业级图形处理单元上运行。它已经满足了标准化的文字转图像模…...

使用ant-design/cssinjs向plasmo浏览器插件的内容脚本content中注入antd的ui组件样式

之前写过一篇文章用来向content内容脚本注入antd的ui&#xff1a;https://xiaoshen.blog.csdn.net/article/details/136418199&#xff0c;但是方法就是比较繁琐&#xff0c;需要将antd的样式拷贝出来&#xff0c;然后贴到一个单独的css样式文件中&#xff0c;然后引入到内容脚…...

南京威雅学校:初中转轨国际化教育,她们打开了成长的另一种可能

“上了大学就轻松了。” 又是一年高考季&#xff0c;每每回想起十八岁前那些没日没夜埋头学习的日子&#xff0c;已经为人父母的你是不是也忍不住想要孩子气地吐槽一句&#xff0c;“骗人”——人不会在一场考试后瞬间长大&#xff0c;试卷里也没有人生的全部答案。 三年前&a…...

Linux | 标准IO编程

Linux | 标准IO编程 时间:2024年6月8日23:03:43 文章目录 `Linux` | 标准`IO`编程1.标准`IO`编程1-1.流的打开函数fopen()1-2.流的关闭函数fclose()1-3.错误处理函数perror()函数strerror()errno 变量总结1-4.流的读写1-4-1.按字符(字节)输入/输出实例1-4-2.按行输入/输出1-…...

从ES的JVM配置起步思考JVM常见参数优化

目录 一、真实查看参数 &#xff08;一&#xff09;-XX:PrintCommandLineFlags &#xff08;二&#xff09;-XX:PrintFlagsFinal 二、堆空间的配置 &#xff08;一&#xff09;默认配置 &#xff08;二&#xff09;配置Elasticsearch堆内存时&#xff0c;将初始大小设置为…...

milvus的GPU索引

前言 milvus支持多种GPU索引类型&#xff0c;它能加速查询的性能和效率&#xff0c;特别是在高吞吐量&#xff0c;低延迟和高召回率的场景。本文我们将介绍milvus支持的各种GPU索引类型以及它们适用的场景、性能特点。 下图展示了milvus的几种索引的查询性能对比&#xff0c;…...

CleanMyMac2024最新免费电脑Mac系统优化工具

大家好&#xff0c;我是你们的好朋友——软件评测专家&#xff0c;同时也是一名技术博主。今天我要给大家种草一个超级实用的Mac优化工具——CleanMyMac&#xff01; 作为一个长期使用macOS的用户&#xff0c;我深知系统运行时间长了&#xff0c;缓存文件、日志、临时文件等都会…...

Hunyuan-MT-7B-WEBUI新手必看:5分钟搞定部署,开启多语言翻译之旅

Hunyuan-MT-7B-WEBUI新手必看&#xff1a;5分钟搞定部署&#xff0c;开启多语言翻译之旅 1. 为什么选择Hunyuan-MT-7B-WEBUI 在全球化交流日益频繁的今天&#xff0c;语言障碍成为许多个人和团队面临的实际问题。Hunyuan-MT-7B-WEBUI作为腾讯混元开源系列中的翻译专用模型&am…...

3步诊断与优化:使用NVIDIA Profile Inspector解决显卡性能瓶颈

3步诊断与优化&#xff1a;使用NVIDIA Profile Inspector解决显卡性能瓶颈 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector作为一款专业的显卡驱动级配置工具&#xff0c;能够…...

UniApp跨平台开发入门:用现有Vue代码快速生成小程序/App(2023最新版)

UniApp跨平台开发实战&#xff1a;2023年Vue代码高效迁移指南 移动互联网时代&#xff0c;开发者常面临一个核心挑战&#xff1a;如何用最小成本将Web应用扩展到移动端。如果你手头已有成熟的Vue项目&#xff0c;UniApp可能是最经济的跨平台解决方案——它允许你复用80%以上的现…...

手把手教你用Python实现熵权PCA:从数据清洗到可视化,一个案例全讲透

用Python实战熵权PCA&#xff1a;电商商品竞争力分析全流程解析 在电商平台的海量商品中&#xff0c;如何快速识别出真正具有竞争力的产品&#xff1f;传统的人工筛选方式不仅效率低下&#xff0c;还容易受到主观偏见的影响。本文将带你用Python实现一个完整的熵权PCA分析流程&…...

告别配置迷茫!手把手教你用DaVinci Configurator配置Autosar NvM Block(含三种类型详解)

告别配置迷茫&#xff01;手把手教你用DaVinci Configurator配置Autosar NvM Block&#xff08;含三种类型详解&#xff09; 在汽车电子开发中&#xff0c;非易失性存储&#xff08;NVM&#xff09;的配置往往是工程师们最头疼的环节之一。面对复杂的AUTOSAR存储协议栈&#xf…...

【刚性 PINN 与时间自适应策略】第九章:综合案例实战:刚性化学反应动力学模拟

目录 9.1 问题描述与数据生成 9.1.1 Robertson 刚性化学反应模型构建 9.1.2 传统 PINN 的失败复现与诊断 第二部分:代码实现 9.1.1.1 三组分反应方程组及其刚性特征分析 9.1.1.2 基准解的生成(使用隐式求解器) 9.1.2.1 训练损失曲线与预测结果的偏差可视化 9.1.2.2 …...

乙巳马年春联生成终端参数详解:长文本生成稳定性保障机制

乙巳马年春联生成终端参数详解&#xff1a;长文本生成稳定性保障机制 1. 引言&#xff1a;当传统春联遇见现代AI 每到新年&#xff0c;家家户户贴春联是传承千年的习俗。一副好春联&#xff0c;不仅要对仗工整、平仄协调&#xff0c;更要蕴含美好的寓意。但创作一副原创的、有…...

嵌入式NTP客户端库:高精度时间同步与自动时区管理

1. NTP客户端库深度解析&#xff1a;嵌入式系统中的高精度时间同步与时区管理1.1 库定位与工程价值NTP&#xff08;Network Time Protocol&#xff09;客户端库是嵌入式系统中实现网络时间同步的关键组件。该库并非简单封装UDP通信&#xff0c;而是构建了一套完整的“时间服务栈…...

二叉树面试送分题|力扣101对称+226翻转(递归极简写法,手写无压力)

兄弟们&#xff01;二叉树面试中&#xff0c;有两道“送分题”必须拿捏——力扣101.对称二叉树和力扣226.翻转二叉树。这两道题难度不高&#xff0c;核心都能用递归轻松解决&#xff0c;代码简洁、逻辑直观&#xff0c;新手练一遍就能记住&#xff0c;面试手写直接加分&#xf…...

LangChain工具绑定避坑指南:为什么你的bind_tools不工作?

LangChain工具绑定深度解析&#xff1a;从原理到实战的避坑指南 当你第一次尝试在LangChain中绑定自定义工具时&#xff0c;可能会遇到各种令人困惑的问题——工具明明定义了却无法调用&#xff0c;参数传递总是出错&#xff0c;或者LLM完全无视你的工具指令。这些问题往往不是…...