unity3d显示移动轨迹_unity 3d刚体移动轨迹绘制线 - CSDN
精华内容
参与话题
  • 实现方法:为物体添加Component->Effects->Trail Render组件,为该组件设置你想要让轨迹表现的Material(我用的是FlameD),也可为轨迹指定为显示的颜色。 主要参数介绍: Materials:要显示的纹理图像。

    简单描述:

    有时为了实现彗星推动彗尾的美妙效果,也为了表现出物体运动的轨迹,需要为物体的轨迹做出标记表明物体的运动。

    实现方法:为物体添加Component->Effects->Trail Render组件,为该组件设置你想要让轨迹表现的Material(我用的是FlameD),也可为轨迹指定为显示的颜色。

    主要参数介绍:

    Materials:要显示的纹理图像。

    Time:轨迹纹理从在场景中开始渲染到结束的停留时间。

    Start Width:轮廓起始处的宽度。

    End Width:轮廓结束处的宽度。

    Colors:轮廓要显示的颜色。

    使用纹理渲(FlameD)染最终效果如图:

    使用颜色渲染最终效果如图:

    参数设置如下图:

     

    展开全文
  • Unity物体运动时画出轨迹

    千次阅读 2019-01-30 15:55:22
    2, 新建空物体,把轨迹画出来,设计和脚本。 3, LineMark的脚本是 using System.Collections; using System.Collections.Generic; using UnityEngine; public class LineMark : MonoBehaviour { priva...

    1, 新建空物体,上赋LineRenderer

    2, 新建空物体,把轨迹画出来,设计和脚本。

    3, LineMark的脚本是

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class LineMark : MonoBehaviour {
    
    
    
    	private GameObject clone;  
    	private LineRenderer line;  
    	private int i;  
    	public GameObject obs;  
    	public GameObject run;  
    	Vector3 RunStart;
    	Vector3 RunNext;
    
    	// Use this for initialization
    	void Start () {
    		RunStart = run.transform.position;
    		clone = (GameObject)Instantiate(obs, run.transform.position, run.transform.rotation);//克隆一个带有LineRender的物体   
    		line = clone.GetComponent<LineRenderer>();//获得该物体上的LineRender组件  
    		//		//line.SetColors(Color.blue, Color.red);//设置颜色  
    		//		//line.SetWidth(0.2f, 0.1f);//设置宽度  
    		i = 0;
    	}
    
    	// Update is called once per frame  
    	void Update () {  
    
    		RunNext = run.transform.position;
    
    		if (RunStart != RunNext) {
    			i++;
    			line.SetVertexCount(i);//设置顶点数 
    			line.SetPosition(i-1, run.transform.position);
    
    		}
    
    		RunStart = RunNext;
    
    
    
    //		if (Input.GetMouseButtonDown(0))  
    //		{  
    //			clone = (GameObject)Instantiate(obs, obs.transform.position, transform.rotation);//克隆一个带有LineRender的物体   
    //			line = clone.GetComponent<LineRenderer>();//获得该物体上的LineRender组件  
    //			line.SetColors(Color.blue, Color.red);//设置颜色  
    //			line.SetWidth(0.2f, 0.1f);//设置宽度  
    //			i = 0;  
    //			print ("GetMouseButtonDown");
    //		}  
    //		if (Input.GetMouseButton(0))  
    //		{  
    //			i++;  
    //			line.SetVertexCount(i);//设置顶点数  
    //			line.SetPosition(i - 1, Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15)));//设置顶点位置   
    //			print ("GetMouseButton");
    //
    //		}  
    
    
    
    
    	}  
    }
    

     

    4,运动小球和脚本

     

    Run.cs

    using UnityEngine;
    using System.Collections;
    
    public class Run : MonoBehaviour
    {
    	public GameObject target;   //要到达的目标
    	public float speed = 10;    //速度
    	private float distanceToTarget;   //两者之间的距离
    	private bool move = true;    
    
    	void Start()
    	{
    		//计算两者之间的距离
    		distanceToTarget = Vector3.Distance(this.transform.position, target.transform.position);  
    		StartCoroutine(StartShoot());
    	}
    
    	IEnumerator StartShoot()
    	{
    
    		while (move)
    		{
    			Vector3 targetPos = target.transform.position;
    
    			//让始终它朝着目标
    			this.transform.LookAt(targetPos);
    
    			//计算弧线中的夹角
    			float angle = Mathf.Min(1, Vector3.Distance(this.transform.position, targetPos) / distanceToTarget) * 45;
    			this.transform.rotation = this.transform.rotation * Quaternion.Euler(Mathf.Clamp(-angle, -42, 42), 0, 0);
    			float currentDist = Vector3.Distance(this.transform.position, target.transform.position);
    			if (currentDist < 0.5f)
    				move = true;
    			this.transform.Translate(Vector3.forward * Mathf.Min(speed * Time.deltaTime, currentDist));
    			yield return null;
    		}
    	}
    
    
    }

     

    5,目标小球和运动设置的脚本

    follew.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class followme : MonoBehaviour {
    
    	Rigidbody follew;
    	// Use this for initialization
    	void Start () {
    		follew = GetComponent<Rigidbody> ();
    	}
    	
    	// Update is called once per frame
    	void Update () {
    
    		transform.Translate (new Vector3(0.1f,0.1f,0.1f));
    	}
    }
    

    6,运行结果

     

     

     

     

     

     

     

    展开全文
  • Curvy是一个非常强大的第三方插件,用于在unity中快速生成游戏轨道,关于此插件的教程网上几乎找不到,官方的视频教程是一个讲法式英语的人讲的,不但视频模糊让人听的简直爆炸,我反正听了一半差点砸电脑了,最后...

    原文链接:http://blog.csdn.net/cordova/article/details/52215079
    Curvy是一个非常强大的第三方插件,用于在unity中快速生成游戏轨道,关于此插件的教程网上几乎找不到,官方的视频教程是一个讲法式英语的人讲的,不但视频模糊让人听的简直爆炸,我反正听了一半差点砸电脑了,最后主要还是靠折腾demo结合视频把主要的用法弄明白了。这里结合官方demo中的几个介绍这个插件的用法,其实很简单,学会后可以轻松拖出一条甚至多条复杂的轨迹,然后可以让物体沿着轨迹运动,更强大的是可以在轨迹上动态生成相应的赛道和轨道,可以控制刚体在轨道上自由运动。

    Unity资源商店的curvy插件链接(有视频教程和相应论坛):https://www.assetstore.unity3d.com/cn/#!/content/7038

    先上几张官方demo炫酷效果的高清截图:
    这里写图片描述

    这里写图片描述

    这里写图片描述
    (1) 第一张图是官方demo的第一个SplineController.sence,展示了飞行器扰简单的圆轨迹循环运动;
    (2) 第二张图展示了生成轨迹并声称轨迹对应的轨道,飞行器沿轨迹在轨道内穿梭;
    (3) 第三张图展示了生成轨迹轨道,并控制一个刚体在轨道上自由滚动;

    一、导入插件

    在工程中选择custom package,导入curvy插件,我这里有个v2.0.2版本的curvy插件供下载,这是个付费插件,还挺贵的,免费送大家:https://pan.baidu.com/s/1i4SYJHV 如果下载不了请回复邮箱地址我发给您。
    这里写图片描述
    导入插件后可看到一个packages的文件夹里面有以下内容,其中有很多demo场景:
    这里写图片描述
    可以运行demo看一下可以实现那些效果,还是很炫酷的。

    二、制作Spline运动轨迹

    1.新建一个场景,会发现导入插件后工程中的场景scene窗口出现一些操作按钮:
    这里写图片描述
    2.生成轨迹

    最快的方法就是直接点击scene场景中上面按钮的最后一个Draw Spline按钮,然后选择轨迹的方向,一般选择第二个y轴朝上。选择后会有提示通过按住control键然后在scene场景中添加控制点,可以添加多个控制点,可以拖动控制点改变生成轨迹的形状,与此同时会发现project面板中已经生成了相应的元素:轨迹和轨迹下的控制点;
    这里写图片描述
    控制点之间的插值有三种选择,linear线性插值就是控制点之间用直线链接,另外还有两种曲线插值必入塞北尔曲线,根据需要进行选择;

    控制点生成的曲线轨迹可以选择闭合或不闭合;
    这里写图片描述
    3.添加沿轨迹运动的游戏物体

    轨迹制作好后现在添加沿轨迹运动的游戏物体,比如最简单的添加一个圆球。插件demo中提供了一个绑定物体和spline轨迹对象的脚本,在project面板搜索splinecontroller脚本,拖动到圆球物体上,然后将上面制作好的curvy spline拖动赋给splinecontroller中的变量进行绑定,同时设置一下运动速度speed,默认是0看不到效果,然后运行一下就可以看到圆球沿着轨迹开始移动了。当然这个脚本的功能是可以自定义的,继承自curvycontroller脚本。
    这里写图片描述

    三、根据Spline轨迹生成封闭运动轨道(重点来了,generator的使用!)

    上面只是利用spline轨迹控制物体运动,但实际上有了这条轨迹数据,我们可以生成相应的跑道,赛道等等,甚至可以利用这条轨迹数据生成任何想要的轨迹形状的物体场景。

    轨道的生成此插件提供了一个generator编辑器,在spline轨迹提供形状数据的基础上,添加材质数据模块,轨道横截面编辑模块来自由控制赛道的形状状态和材质。

    1.新建generator组件

    首先右键(最好就在curvy spline下新建作为子物体了) –>curvy –> generaotr新建一个generaotr对象,当然也可以点击sence窗口中的按钮新建,此时generator下是空的,鼠标选中generator后,会发现sense窗口出现了edit按钮,点击edit打开generaotr编辑窗口;
    这里写图片描述
    由于generator还是空的,所以编辑窗口空空如也,此时右键添加一个基本的shape extrusion模板,会发现编辑窗口出现了五个逻辑连接的小窗口,同时会到hierarchy窗口会发现generator对象下出现了相应的子物体,现在就可以进行编辑轨道了;
    这里写图片描述
    2.轨道的轨迹形状绑定

    新建模板后会发现从input spline path链接出来的窗口标题是红色的,那是因为后面的三个窗口都用到了第一个窗口的path轨迹数据来生成轨道,由于还没有绑定轨迹所以红色警告。将之前做好的spline轨迹对象拖到input spline path面板对应的引用上即可,
    这里写图片描述
    也可以在hierarchy窗口拖入绑定,两边可以相互结合对应来设置调整;

    3.轨道横截面设置

    有了轨迹数据后便有了制作轨道的轨迹形状,现在通过input spline shape来制作轨道的横截面。横截面的制作方法和spline的轨迹类似,可以是闭合的中空曲线截面,也可以是开放的。横截面可以选择已有的规则形状,比如:圆形,矩形等等,设置相应的控制点个数,半径大小等等,也可以选中freedom来通过多个控制点来制作自由曲线横截面;
    这里写图片描述
    通过移动横截面控制点的位置来调整横截面的形状,控制点可以通过contrl+d来复制添加,横截面是一个平面图形,所以一般在2d模式下设置,
    这里写图片描述
    编辑时最好在show gizmos打勾显示横截面形状方便编辑:
    这里写图片描述
    注意:横截面曲线只有它的形状对轨迹起作用,其位置在哪里无任何影响。

    4.轨道材质设置

    轨道的材质通过volme mesh对象来设置,可以添加多个材质,选中mat0,更改材质即可:
    这里写图片描述
    注意:上面的设置改变后不会立刻看到效果,需要运行工程或者轻微调整spline轨迹的控制点来出发轨道的更新显示。

    如下图是一个横截面闭合的简单管道型的中空轨道:
    这里写图片描述
    @扩展:实际上可以利用一条spline轨迹,在同一个generator下添加其下的多个模板组建,通过多个横截面组合更复杂的轨道横截面形状。

    四、生成开放轨道和自由运动的刚体

    这里只做一个开放的轨道,并制作一个可以自由运动的刚体在开放轨道上自由活动,也就是文章开始截图三足球在轨道上滚动的效果,插件中rigidbody demo提供了展示。

    这时需要将横截面做成一个凹槽状,从而只做一个凹槽轨道,另外可以通过还没有用过的其他两个面板来调整轨道的形态,而不是宽度始终一致粗细均匀,可以让轨道岁曲线粗细变化显得更自然。然后添加一个自由运动的刚体测试轨道。
    这里写图片描述

    五.实时计算物体与spline轨迹最近的点坐标

    插件提供函数用来计算场景中spline轨迹上离某个物体最近的点,通过这个点可以计算物体偏离轨道的程度。比如竞速游戏可以实现实时计算赛车偏离轨道的距离,还可以通过轨道上最近的点坐标对赛车进行复位,使其回到轨道上。此功能插件的NearestPoint的demo中有展示。

    实时获取最近点的方法如下:

        public CurvySpline Spline; // spline轨迹对象  
        public transform target; //计算偏离的物体,比如赛车  
    
        if (Spline && Spline.IsInitialized && target) //保证spline和target存在  
        {  
    
            // 将target的坐标转换到spline所在的本地坐标系  
            var targetPos = Spline.transform.InverseTransformPoint(target.position);  
            // 获得target在spline上的最近点的TF值  
            float nearestTF=Spline.GetNearestPointTF(targetPos);  
            // 转换到世界坐标系的spline上最近点的坐标值  
            var nearestPos = Spline.transform.TransformPoint(Spline.Interpolate(nearestTF));  
        }  

    记得在脚本中添加curvy的namespace。 重点内容

    展开全文
  • unity5.6.3X64工程,功能是绘制场景中运动物体的轨迹,即游戏物体运动时把路过的轨迹用曲线绘制出来。任意曲线轨迹都可以实现。
  • Unity之DOTweenPath轨迹移动

    万次阅读 2020-05-04 15:51:26
    Unity之DOTweenPath轨迹移动

    博客迁移

    个人博客站点,欢迎访问,www.jiingfengji.tech

    正文

    先简单介绍一下DOTweenPath。

    先来看一下DOTweenPath组件的截图

    这里写图片描述

    1、Scene View Commands
    (1)SHIFT+CTRL:add a waypoint
    加一个轨迹点
    (2)SHIFT+ALT:remove a waypoint
    移除一个轨迹点

    2、INfo
    (1)Path Length:轨迹长度

    3、Tween Options
    (1)AutoPlay:自动播放
    (2)AutoKill:播放完自动销毁动画
    (3)Duration:动画时长
    SpeedBased:If selected ,the duration will count as units/degreex second;如果被选上,该时间作为单位时间。

    (4)Delay:延时
    (5)Ease:这是一个枚举,可以理解为动画播放速率曲线
    这里写图片描述

    相关网址:
    http://dotween.demigiant.com/documentation.php
    以及:http://robertpenner.com/easing/easing_demo.html

    (6)Loops:循环次数,动画循环播放的次数
    -1:表示 一直循环
    0:表示只播放一次
    当该值>1时,检视面板出现LoopType,顾名思义就是指循环类型:
    Restart:重新开始,后面的动画循环播放会从起点重新开始;
    Yoyo:来回播放
    Incremental:增加的,后面的path移动动画会在上一次循环的终点的基础上进行播放

    (7)ID:动画ID
    (8)UpdateType:这个枚举有三个值,指更新类型
    Normal:正常更新,Update()
    Late:晚于更新,LateUpdate()
    Fixed:固定更新,FixedUpdate()

    4、Path Tween Options
    (1)Path Type:轨迹线类型
    Linear:线型的
    Catmull Rom:曲线
    (2)Close Path:封闭曲线,将起点和终点相连
    (3)Lock Rotation:锁旋转,xyzw

    5、Path Editor Options:轨迹编辑参数,就不介绍了

    6、ResetPath:重置轨迹
    7、Events:
    (1)OnStart:开始时
    (2)OnPlay:播放时
    (3)OnUpdate:更新时
    (4)OnStep:单步完成时
    (5)OnComplete:完成时
    (6)OnCreated:动画创建时
    事件顺序为:OnCreated->OnStart->OnPlay->OnUpdate(一直执行,直到完成),动画过程中单步完成时执行OnStep,整个动画完成后执行OnComplete

    8、WayPoints:移动轨迹点
    其中右边的Copy to clipboard,将坐标复制至剪贴板
    这里写图片描述
    加减按钮即指增加减少坐标点

    以上便是对于DOTweenPath组件的一个基本介绍。

    接下来,DOTween对于轨迹移动提供的接口:
    (1)DOPath:
    这里写图片描述
    (2)DOLocalPath
    这里写图片描述

    以上两个函数的参数再上面已经介绍过,这里就不再重复说明了。

    DOTween插件,大家请自行下载。

    展开全文
  • Unity3d 简单的按照路径移动物体!

    万次阅读 2014-03-05 22:08:10
    在TORQUE引擎中,我们只要设置几个点,然后物体会按照这几个点顺序移动Unity3d也可以的,现在介绍一个很简单的按照路径移动的方法。 目标是让蓝色方块沿着紫色方块组成的路径移动,设计思想就是让蓝色方块...
  • Unity3D 路径的编辑与跟随路径的移动脚本的编写。
  • 现在要做得一个东西是,人物在相机视角范围内,相机不移动,当人物出了相机视角范围内,相机才跟随物体移动,这时由又能看到物体了。这样方便看到物体的运动轨迹,求教
  • 程序版本 :unity 5.5.0f3 3D物体在2D平面中移动旋转
  • unity3D-下载安装指南

    2020-02-17 20:20:28
    下载安装unity3D ​ 2.下载安装JavaJDK ​ 3.下载安装AndroidSDK ​ 4.下载安装NDK ​ 5.在unity3D中将2-4安装的地址在制定位置连接上[最重要的一步] ​ 6.3DMax下载安装 ​ 7.3DMax基本使用 ​ 8.3DMax 创建一个...
  • Unity3D 中物体向目标移动

    千次阅读 2012-11-28 13:22:54
    这几天在写一个数字漫游项目,有一个要求是在高空鸟瞰,沿着固定的路径移动.........  部分代码如下:C#代码,CameraMove.cs using UnityEngine; using System.Collections; public class CameraMove : ...
  • 话不多说,直接上代码。代码复制粘贴即可用,使用代码的时候,给目标添加刚体即可。 using System.Collections; using System.Collections.Generic; using UnityEngine;...public class Parabol : MonoBehaviour ...
  • 动画曲线 移动物体 using System.Collections; using System.Collections.Generic; using UnityEngine; public class AnimCuveMove : MonoBehaviour { public AnimationCurve x_offsetCurve; public ...
  • Unity3d 序列目标点的移动

    千次阅读 2017-07-03 17:47:59
    上篇对于角色鼠标点击移动的总结后,感觉自己经验值有点爆棚感觉,可以小小升一级了,虽然这个主题比较小但是是动画的基础,而游戏本身就是又是基于动画基础的,所以还是很有意义的。 由于要研究2d的寻路算法,A*...
  • 今天在做项目中,发现很多时候我们需要做一个金币移动效果。 比如,点击某个按钮之后,按钮附近出现各种零散的金币,然后他们都会向着显示金币的框框飞。 一般如果按钮都是固定的话,那么可以直接使用一个例子系统...
  • unity3d相机拖拽移动脚本,结合easyTouch,不提供easyTouch插件,此脚本需easyTouch5支持,下载easyTouch后把脚本放到工程即可,然后按下面的图示例就可以了 相机组件层级设置.gif using UnityEngine; using ...
  • Unity3D常见面试题

    万次阅读 多人点赞 2017-08-11 20:20:00
    Unity3D常见面试题
  • Unity3d实战之Unity3d网络游戏实战篇(1):坦克构建 阅读文章前请细读以下几点: 学习书籍《Unity3d网络游戏实战》 罗培羽著 机械工业出版。 本文是作者在学习过程中遇到的认为值得记录的点,因此引用的代码...
  • Unity3d开发基础篇之射线碰撞检测

    千次阅读 2019-11-20 19:28:36
    Unity3d开发基础篇之射线碰撞检测介绍射线的创建和显示 介绍        在游戏开发过程中,很多地方要用到射线碰撞检测。比如:射击游戏中子弹是否击中敌人,在RPG游戏中是否捡到装备,无人驾驶...
  • 说说Unity3D里的各种坐标系

    千次阅读 2015-11-03 08:27:23
    今天博主想和大家聊聊unity3D中各种坐标系。自从Unity4.6版本推出uGUI后,unity3d坐标系的大家庭中便增加了RectTransform这个新成员,如果你不想被各种坐标系搞得晕头转向的话,那么请随我一起来梳理下Unity3D中各种...
1 2 3 4 5 ... 20
收藏数 1,002
精华内容 400
关键字:

unity3d显示移动轨迹