广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Unity实现物体运动轨迹的绘制
  • 368
分享到

Unity实现物体运动轨迹的绘制

2024-04-02 19:04:59 368人浏览 独家记忆
摘要

本文实例为大家分享了Unity物体运动轨迹绘制的具体代码,供大家参考,具体内容如下 ① create empty,命名为LineRender ② 在Assects中新建材质,选择Sh

本文实例为大家分享了Unity物体运动轨迹绘制的具体代码,供大家参考,具体内容如下

① create empty,命名为LineRender

② 在Assects中新建材质,选择Shader为Sprites/Default,并设置轨迹颜色,如下图:

③ 选择①中创建的object,添加Line Render属性,然后将②中新建的材质赋给该object,如下图:

展开Line Render,拖动Width可设置轨迹宽度

④ 创建C#脚本,拖至运动物体上,代码如下:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class draw_orbit : MonoBehaviour
{
    // 绘制轨迹组件
    public LineRenderer line;
    public List<Vector3> points;
    // 读取本地txt文件位置信息,改变物体位置
    string[] text_buf;
    int i = 0;
    // Start is called before the first frame update
    void Start()
    {
     // 物体位置控制方法根据自己需求来,我这里是从txt文件读取位置信息然后更新
        TextAsset ta = Resources.Load("satellite_orbit") as TextAsset;
        string text = ta.text;
        text_buf = text.Split('\n');
    }

    // Update is called once per frame
    void Update()
    {
        try
        {
            if (i < text_buf.Length)
            {
                // 读取坐标信息
                string[] line = text_buf[i].Split(',');
                float x = Convert.ToSingle(line[0])/1000;
                float y = Convert.ToSingle(line[1])/1000;
                float z = Convert.ToSingle(line[2])/1000;
                // 更新物体位置
                transfORM.position = new Vector3(x, y, z);
                // 绘制轨迹
                AddPoints();
            }
            i++;
        }
        catch(Exception ex) {
            Debug.Log(ex.Message);
        }
        
    }

    // 绘制轨迹方法
    public void AddPoints()
    {
        Vector3 pt = transform.position;
        if (points.Count > 0 && (pt - lastPoint).magnitude < 0.1f)
            return;
        if (pt != new Vector3(0, 0, 0))
            points.Add(pt);

        line.positionCount = points.Count;
        if (points.Count > 0)
            line.SetPosition(points.Count - 1, lastPoint);
    }
    public Vector3 lastPoint
    {
        get
        {
            if (points == null)
                return Vector3.zero;
            return (points[points.Count - 1]);
        }
    }
}

⑤ 选中运动物体,可以看到其Script组件中出现Line Render属性,将①中的object拖进去,如下图:

⑥ 运行场景,可以看到如下效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Unity实现物体运动轨迹的绘制

本文链接: https://www.lsjlt.com/news/135430.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Unity实现物体运动轨迹的绘制
    本文实例为大家分享了unity物体运动轨迹绘制的具体代码,供大家参考,具体内容如下 ① create empty,命名为LineRender ② 在Assects中新建材质,选择Sh...
    99+
    2022-11-12
  • Unity实现物体运动时画出轨迹
    本文实例为大家分享了Unity实现物体运动时画出轨迹的具体代码,供大家参考,具体内容如下 1、新建空物体,上赋LineRenderer 2、新建空物体,把轨迹画出来,设计和脚本。 ...
    99+
    2022-11-12
  • Python中使用kitti数据集实现自动驾驶(绘制出所有物体的行驶轨迹)
    目录1、利用IMU、GPS计算汽车移动距离和旋转角度2、画出kitti车的行驶轨迹3、画出所有车辆的轨迹本次内容主要是上周内容的延续,主要画出kitti车的行驶的轨迹 同样的,我们先...
    99+
    2022-11-11
  • canvas中如何绘制贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
    小编给大家分享一下canvas中如何绘制贝塞尔公式推导与物体跟随复杂曲线的轨迹运动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果预览在本例中生成的曲线由以上文...
    99+
    2023-06-09
  • canvas如何实现按住鼠标移动绘制出轨迹
    小编给大家分享一下canvas如何实现按住鼠标移动绘制出轨迹,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概要工作以来,写过vue、react、正则、算法、小程序...
    99+
    2023-06-09
  • Android贝塞尔曲线初步学习第三课 Android实现添加至购物车的运动轨迹
    不知上一节高仿QQ未读消息气泡大家还喜欢么,今天继续练习贝赛尔曲线,这一节我们通过贝赛尔曲线和属性动画估值器实现添加至购物车的运动轨迹,效果如下: 1、新建自定义View,重...
    99+
    2022-06-06
    学习 购物车 运动 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作