unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家

本文主要是介绍unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Unity3d圆形障碍避障算法,动态避障,静态避障

屎壳郎推屎回娘家
废话不多上图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1:根据,屎和娘家的位置做计算,不管屎在哪里,获取朝向娘家,屎后面一定距离的位置

//获取位置Vector3 GetTraget(Vector3 start, Vector3 end) //end 家{Vector3 normal = (end - start).normalized;float percent = -4; //距离屎保留一点距离return normal * (percent) + start;}

2:屎壳郎需要跑到屎后面,推屎回娘家,需要进行避障算法

//避障算法private List<Vector3> pathPoints = new List<Vector3>();private void FindPath(Vector3 palyerPos, Vector3 targetPos, Vector3 obstaclePos, float aroundRadius){pathPoints.Add(palyerPos);Vector3 pathDir = targetPos - palyerPos;Vector3 pointDir = obstaclePos - palyerPos;float crossValue = Vector3.Cross(pathDir, pointDir).y;float angleDelta = 45;if (crossValue < 0){angleDelta = -45;}Vector3 obstacleToPlayer = (palyerPos - obstaclePos).normalized;Vector3 obstacleToTarget = (targetPos - obstaclePos).normalized;float threshold = Vector3.Dot(obstacleToPlayer, obstacleToTarget);bool caculateFinished = false;int i = 1;do{   Quaternion randRotate = Quaternion.Euler(0, angleDelta * i, 0);Vector3 extendDir = (randRotate * obstacleToPlayer).normalized;Vector3 tempPos;if (Vector3.Dot(extendDir, obstacleToPlayer) <= threshold){caculateFinished = true;tempPos = targetPos;}else{tempPos = obstaclePos + extendDir * aroundRadius;}pathPoints.Add(tempPos);++i;} while (!caculateFinished);pathPoints.Add(targetPos);}

3:在推屎过程中出现不可抗拒因素,即时使用Update计算获取新的推屎路线,

哈哈啊哈~~~~~

这篇关于unity 圆形障碍,避障算法,动态避障,静态避障,屎壳郎推屎回娘家的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/285481

相关文章

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET