推荐阅读

  • CSDN主页
  • GitHub开源地址
  • Unity3D插件分享
  • 简书地址
  • 我的个人博客
  • QQ群:1040082875

大家好,我是佛系工程师❤️恬静的小魔龙❤️,不定时更新Unity开发技巧,觉得有用记得点赞收藏哦。

一、前言

效果图:

二、嫦娥奔月

实现自定义路径的嫦娥奔月动画,需要先完成画路线,然后嫦娥沿着路线移动。

画路线,需要用到GL画线,然后渲染到物体上。

然后使用DoTween的路径移动进行移动。

❤️第一步:新建项目

设置完项目的名字和路径后点击创建按钮,创建一个项目。

❤️第二步:搭建场景

先将我们的背景图和嫦娥导入到项目中:

Note:直接另存为图片下载,导入到项目中即可。

在Hierarchy视图中选择Create→3D Object→Quad命令,新建一个Quad对象,然后将背景图附上:

这样,我们的项目就搭建好了,下面需要实现画线功能。

❤️第三步:自定义画线

新建脚本PaintUI.cs,编辑脚本:

using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PaintUI : MonoBehaviour
{[Header("渲染Quad")]public Renderer m_rendered;[Header("颜色")]public Color m_drawColor;public GameObject m_player;private List<Vector3> m_vertexList;private void Start(){m_vertexList = new List<Vector3>();}private void Update(){if (Input.GetMouseButtonDown(0)){m_vertexList = new List<Vector3>();}if (Input.GetMouseButton(0)){//记录点位m_vertexList.Add(Camera.main.ScreenToViewportPoint(Input.mousePosition));}}public void OnRenderObject(){//画线GL.Begin(GL.LINES);GL.LoadOrtho();GL.Color(m_drawColor);for (int i = 1; i < m_vertexList.Count; i++){GL.Vertex3(m_vertexList[i - 1].x, m_vertexList[i - 1].y, 0);GL.Vertex3(m_vertexList[i].x, m_vertexList[i].y, 0);}GL.End();}
}

将脚本附到Quad对象上,然后将Quad对象拖到PaintUI组件的Rendered卡槽中:

运行程序,可以看到可以正常画线了:

❤️第四步:嫦娥奔月

下面有请主角嫦娥,将嫦娥的Texture Type设置为Sprite:

然后直接将嫦娥从项目区Project拖入到Hierarchy层级视图中:

设置嫦娥的大小跟位置,让嫦娥跟这个场景匹配:

导入DoTweenPro插件:

https://download.csdn.net/download/q764424567/23353761

需要Path路径动画,所以需要导入DOTweenPro插件

先导入DOTweenPro插件,然后修改脚本PaintUI.cs:

using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PaintUI : MonoBehaviour
{[Header("渲染Quad")]public Renderer m_rendered;[Header("颜色")]public Color m_drawColor;public GameObject m_player;private List<Vector3> m_vertexList;private void Start(){m_vertexList = new List<Vector3>();}private void Update(){if (Input.GetMouseButtonDown(0)){m_vertexList = new List<Vector3>();}if (Input.GetMouseButton(0)){//记录点位m_vertexList.Add(Camera.main.ScreenToViewportPoint(Input.mousePosition));}if (Input.GetMouseButtonUp(0)){Moonfall();}}public void OnRenderObject(){//画线GL.Begin(GL.LINES);GL.LoadOrtho();GL.Color(m_drawColor);for (int i = 1; i < m_vertexList.Count; i++){GL.Vertex3(m_vertexList[i - 1].x, m_vertexList[i - 1].y, 0);GL.Vertex3(m_vertexList[i].x, m_vertexList[i].y, 0);}GL.End();}private void Moonfall(){Vector3[] path = m_vertexList.ToArray();m_player.transform.DOPath(path, 3);}
}

然后等待脚本编译完后,将嫦娥拖到PaintUI组件的Player卡槽中:

运行程序:

三、后言

本篇文章使用GL进行画线,然后使用DoTweenPro插件制作了一个自定义任意路径的嫦娥奔月动画。

觉得有意思记得点赞哦。

中秋佳节,实现一个自定义任意路径嫦娥奔月程序:过什么节,代码走起相关推荐

  1. [微信小程序]组件化开发,以一个自定义模块框组件当做示例(附完整示例代码和效果图)

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 自定义组件我把它分为简单的三个步骤, 1.创建组件 --- 2.编写组件  ---   3.调用,使用 ...

  2. 中秋我用CSS写了个嫦娥奔月

    为了这个中秋创意我觉得我自己也是绞尽脑汁了,看到那个中秋创意的选题,我瞧了瞧Python 画图,不会,又看爬虫,行不通(乱爬听说会被邀请喝咖啡),前端页面制作,我都没写过几个

  3. 微信小程序实现一个复杂的路径动画

    微信小程序实现一个复杂的路径动画 前言 效果预览 页面代码 结论 前言 微信小程序不支持svg动画,如今css3发展的越来越快,虽然没有svg的接口那么丰富,但使用起来比较容易上手,下面借助两个工具实 ...

  4. 前端开发:使用HTML5简单实现嫦娥奔月动画

    前言 中秋节虽然过去了,但是还是想分享一个知识点,基于使用HTML5简单实现嫦娥奔月动画的效果,分享一下,感兴趣的读者可以复制一下代码查看一下效果. 需求 借助前端知识来实现简单的嫦娥奔月动画.嫦娥和 ...

  5. python绘制月亮_用Python写一个嫦娥奔月,中秋快乐

    原标题:用Python写一个嫦娥奔月,中秋快乐 月是故乡明,每到中秋佳节,很多在外打工的码农因为工作不一定能回家团圆.今时今日不知有多少人为了生计.为了事业.为了理想远走他乡,在一座陌生的城市中寻求一 ...

  6. 中秋将至,通过代码实现嫦娥奔月庆祝佳节

    前言 一年一度的中秋节就要到了,每年中秋节都有不一样的境遇,岁岁中秋,今有中秋.为了烘托节日气氛,结合工作内容,实现一个通过HTML5简单实现嫦娥奔月的效果,分享一下,感兴趣的可以复制一下代码查看一下 ...

  7. alias实现VREP/Coppeliasim等软件在任意路径以自定义名称启动

    利用alias实现VREP/Coppeliasim等软件在任意路径以自定义名称,即输入自定义别名的形式启动. 1.任意终端输入 gedit ~/.bashrc 2.进入bashrc后任意行输入 ali ...

  8. 中秋佳节,基于华为云AI制作属于自己的月亮!

    中秋佳节,基于华为云AI制作属于自己的月亮! 一.前言 二.结果展示 三.模型简介 四.实验环境 五.实验步骤 1.导入依赖包 2.参数设置 3.调用视频和图片 4.定义SkyFilter类 5.处理 ...

  9. win10子系统ubuntu文件夹位置_win10子系统(WSL)自定义安装路径

    1.下载linux安装包: 下载地址:https://docs.microsoft.com/en-us/windows/wsl/install-manual 官方提供的离线安装包有 Ubuntu 18 ...

最新文章

  1. One-shot Learning with Memory-Augmented Neural Networks
  2. MySQL/MariaDB的response time插件
  3. Linux开机启动过程(9):进入内核入口点之前最后的准备工作
  4. python程序设计常见运算符号_python常用运算符
  5. thinkphp5--文章发布后台管理系统
  6. 蓝桥杯2016年七届C/C++省赛C组第一题-报纸页数
  7. Kubernetes详解(十八)——Pod就绪性探针实战
  8. windbg调试C#代码(二)
  9. 2015年7月之 装订空白
  10. 安卓手机端抓包获取直播源下载并使用PotPlayer播放
  11. java私塾 代码_【整理】java私塾教程课后习题
  12. 使用Java的MessageDigest实现MD5加密算法
  13. 新版 OPPO Enco Free 2 固件工具 (仅供交流学习使用)
  14. LibreOffice创建数据透视表
  15. 计算机知识与技能比赛活动总结,技能大赛总结优秀范文
  16. 域名显示服务器错误,域名解析出现错误是怎么回事?
  17. LT2611UXC-LVDS转HDMI2.0转换芯片
  18. OpenFOAM 工具列表
  19. window下Nexus私服高级搭建
  20. 打码平台php源码,正方验证码识别(非打码平台)(已解决运行出现4个#)

热门文章

  1. SEO优化人员分析IIS日志方法详解
  2. Shader 学习笔记:杂记
  3. 高德地图Amap2.0注销清除不掉内存的解决方法
  4. 【Matlab 控制】拉氏变换和Z变换
  5. 完美世界:影视和游戏,二者为何不可兼得?
  6. 核高基引发的Linux口水战
  7. 微信小程序java中文乱码_如何解决微信小程序显示中文无法上传或者出现乱码的问题?...
  8. python分层抽样_基于列的sklearn分层抽样
  9. python判断正数和负数教案_正数和负数优秀教案
  10. 交互设计实用指南系列(11)—减少记忆负担