自动行为操控(Steering)(一)—框架
自动操控架构图
操控框架类职责
Steering类
public abstract class Steering : MonoBehaviour
{//速度public float speed;//目标public Transform target;//运动体[HideInInspector]public Vehicle vehicle;//期望操控力[HideInInspector]public Vector3 exceptForce;//权重public float weight=1;private void Start(){Init();}//初始化public virtual void Init(){vehicle = GetComponent<Vehicle>();if (speed == 0)speed = vehicle.maxSpeed;}public abstract Vector3 ComputerFinalForce();
}
Vehicle类
///<summary>///运动体///</summary>public class Vehicle : MonoBehaviour{/// <summary>当前操控力</summary>public Vector3 currentForce;/// <summary>最大移动速度</summary>public float maxSpeed=10;/// <summary>质量</summary>public float mass=1;/// <summary>加速度</summary>[HideInInspector]public float AcceleratedSpeed;/// <summary>转向速度</summary>public float rotationSpeed=5;/// <summary>合力</summary>public Vector3 finalForce;/// <summary>最大合力</summary>public float maxForce=100;/// <summary>操控对象</summary>public Steering[] steerings;/// <summary>是否是平面</summary>public bool isPlane;//计算合力的间隔事件public float computerInterval=0.2f;private void Start(){steerings = GetComponents<Steering>();InvokeRepeating("CalculateFinalForce", 0, computerInterval);}public void CalculateFinalForce(){//合力清零finalForce = Vector3.zero;//遍历所有的操控对象for (int i = 0; i < steerings.Length; i++){//将每个操控对象计算的操控力叠加在一起形成合力finalForce += steerings[i].ComputerFinalForce();}if (finalForce == Vector3.zero) currentForce = Vector3.zero;if (isPlane){finalForce.y = 0;currentForce.y = 0;}//对合力做最大化的钳制// if(finalForce.magnitude>maxForce)// finalForce = finalForce.normalized * maxForce;finalForce=Vector3.ClampMagnitude(finalForce, maxForce); //合力除以质量得到最后的加速度(合力)finalForce = finalForce / mass;}}
LocomotionController类
///<summary>///操控控制器///</summary>public class LocomotionController : Vehicle{//移动public void MoveMent(){currentForce += finalForce * Time.deltaTime;//currentForce不能超过maxspeed//if(currentForce.magnitude<maxSpeed)currentForce = Vector3.ClampMagnitude(currentForce, maxSpeed);transform.position += currentForce * Time.deltaTime;//Vector3.MoveTowards(transform.position, currentForce, currentForce.magnitude);}//转向public void Rotation(){if(currentForce!=Vector3.zero){//转向当前操控livar dir = Quaternion.LookRotation(currentForce);transform.rotation = Quaternion.Lerp(transform.rotation, dir, rotationSpeed * Time.deltaTime);}}public void PlayAnimation(){}private void Update(){Rotation();MoveMent();PlayAnimation();}}
自动行为操控(Steering)(一)—框架相关推荐
- 自动测试如何选择自动化测试框架_机器擅长回归测试,人类善于寻找Bug _Pekka Klärck
Robot Framework作者建议自动测试如何选择自动化测试框架.软件自动化测试,作为手工测试的替代,越来越受到关注.Pekka Klrck,作为Robot Framework的创建者和核心开发者 ...
- 自动驾驶系统进阶与项目实战(八)面向自动驾驶的高精度地图框架解析和实战
自动驾驶系统进阶与项目实战(八)面向自动驾驶的高精度地图框架解析和实战 前面聊了一些如何制作较大规模的点云地图以及如何使用点云地图进行定位的方法,点云图是高精度地图的一部分,主要用于配准定位和作为高精 ...
- AAAI 2020 | 滴滴东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍...
点击上方"视学算法",选择"星标" 快速获得最新干货 2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办.不久之前,大会官方公 ...
- phpexcel的自动加载与其他框架有冲突
2019独角兽企业重金招聘Python工程师标准>>> 一直想用phpEXCEL,这次这个项目遇到了.然而坑也出来了.phpexcel的Autoloader.php里面 public ...
- Swagger自动接口文档生成框架————springboot整合swagger总结
swagger简介: swagger是一款开源的api接口文档生成工具. Swagger的项目主页:https://swagger.io/ 目前比较流行的做法是在代码中加入swagger相关的注 ...
- 性能提升120倍!滴滴东北大学提出自动结构化剪枝压缩算法框架
点击我爱计算机视觉标星,更快获取CVML新技术 本文转自机器之心. 机器之心编辑部 2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办.不久之前,大会官方公布了今年的 ...
- 无需公式或代码,用生活实例谈谈 AI 自动控制技术“强化学习”算法框架
不用公式.不用代码,白话讲讲强化学习原理 The best way to learn is to teach others. 战胜围棋高手李世石的 AlphaGo ,称霸星际争霸2的 AIphaSta ...
- c 自动生成html报告,Pytest框架之 - Allure生成漂亮的HTML图形测试报告
官网介绍 1. Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用 ...
- [Qt5布局] 控件自动填满所在布局框架
最新文章
- 安卓系列七(广播机制)
- AI一分钟 | 小米公布Q2财报,上市以来股价振幅高达30%;俄制造商推出步行杀手机器人...
- R语言绘制不一样的条形图
- 黑鲨科学计算机,科学技术篇:玩家注意黑鲨一口气发布两款重磅新品
- keil c51的内部RAM(idata)动态内存管理程序(转)
- asp.net treeView 节点 点击 变色
- socket编程实现文件传输功能
- cocos2d-x游戏开发(八)各类构造器
- 国标流媒体H5实现无插件视频监控按需直播
- java switch中if_详解java中if语句和switch的使用
- java aspectj_AspectJ的基本用法
- 深入比特币原理(三)——交易的输入(input)与输出(output)
- python3生成器_Python3.7之生成器
- SpringBoot2.1.5 (9)--- GET 请求
- python类和对象详解_python面向对象编程:类和对象详解介绍 – Python高级开发教程...
- 开源cnc软件_带有开源软件的CNC铣削
- Java开发工具 - IDEA 的使用及简单配置
- 斗鱼直播弹幕python_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)
- kru生成树变种 poj3522 bzoj 1196
- Windows7 VS2015 下编译 PythonQt3.2
热门文章
- 重磅!华为正式出售荣耀,不再持有任何股份
- JAVA使用JTS 判断坐标点是否在坐标多边形内部
- Android Studio安卓开发-RecycleView新闻栏设计
- 央行货币与私人货币:经济学家Eswar Prasad谈“货币的未来”
- Caused by: java.sql.SQLException: Incorrect string value: '\xE8\x8A\x82\xE7\x9B\xAE...' for column '
- 胶囊网络(Capsual Network)
- 创建hive表,指定存储和压缩格式
- Jsdoc-to-markdown
- 网络安全 kali Web安全之CSRF攻击
- 西工大数据结构实验NOJ参考代码和分析合集