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

恬静的小魔龙 发表于 2022/08/25 00:12:17 2022/08/25
【摘要】 推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 大家好,我是佛系工程师❤️恬静的小魔龙❤️,不定时更新Unity开发技巧,...

推荐阅读

大家好,我是佛系工程师❤️恬静的小魔龙❤️,不定时更新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();
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

将脚本附到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);
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

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

在这里插入图片描述

运行程序:

在这里插入图片描述

三、后言

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

觉得有意思记得点赞哦。

文章来源: itmonon.blog.csdn.net,作者:恬静的小魔龙,版权归原作者所有,如需转载,请联系作者。

原文链接:itmonon.blog.csdn.net/article/details/126509455

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。