系列目录

【Unity3D基础】让物体动起来①--基于UGUI的鼠标点击移动

【Unity3D基础】让物体动起来②--UGUI鼠标点击逐帧移动

时光煮雨 Unity3D让物体动起来③—UGUI DoTween&Unity Native2D实现

时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画

时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率

时光煮雨 Unity3D实现2D人物移动-总结篇

时光煮雨 Unity3d 序列目标点的移动①

背景

上篇对于角色鼠标点击移动的总结后,感觉自己经验值有点爆棚感觉,可以小小升一级了,虽然这个主题比较小但是是动画的基础,而游戏本身就是又是基于动画基础的,所以还是很有意义的。

由于要研究2d的寻路算法,A*寻路,A*寻路是基于网格的所以,序列点的移动就成了我的研究方向。这里经过一番努力,基本有了几个方向。

A、DoTween有一个sequence动画组合可以满足

B、iTween 中有类似功能但不完全满足

C、自己实现

本篇主要整理网上的资源做个整理,共享出来。

实现

A、DoTween这个其实很简单,直接用函数就行,只是感觉有点不爽,人家是做组合动画的,感觉杀鸡用牛刀的感觉,果断放弃了

B、iTween 中有类似功能但不满足

这里为什么说不满足,借下雨松MOMO的图片,一看便知

其中红色的线是插件进行曲线插值得出的结果(基于3个点,运算还是挺复杂的),而黄色线是调试显示的4点的直线辅助线,如果直接使用插件得到的运行轨迹是不复核我的要求的,不过itween的使用代码还是比较简单的一看就明白了(这里剽窃雨松MOMO的原文链接是:iTween研究院之学习笔记Move移动篇(一)

using UnityEngine;
using System.Collections;
 
public class Path : MonoBehaviour {
 
    //路径寻路中的所有点
    public Transform [] paths;
 
    void Start ()
    {
        Hashtable args = new Hashtable();
        //设置路径的点
        args.Add("path",paths);
        //设置类型为线性,线性效果会好一些。
        args.Add("easeType", iTween.EaseType.linear);
        //设置寻路的速度
        args.Add("speed",10f);
        //是否先从原始位置走到路径中第一个点的位置
        args.Add("movetopath",true);
        //是否让模型始终面朝当面目标的方向,拐弯的地方会自动旋转模型
        //如果你发现你的模型在寻路的时候始终都是一个方向那么一定要打开这个
        args.Add("orienttopath",true);
 
        //让模型开始寻路   
        iTween.MoveTo(gameObject,args);
    }
 
    void OnDrawGizmos()
    {
        //在scene视图中绘制出路径与线
        iTween.DrawLine(paths,Color.yellow);
 
        iTween.DrawPath(paths,Color.red);
 
    }
}

实际上我在研究上篇基于时间线移动的时候,分析学习了itween的源代码,其实就是事件线插值动画,没有什么高深的原理。实际上完全可以扩展itween实现这个功能的,如果把原理弄明白后。

C、自己实现

这是本文的重头戏了,下面是我google了很久找的一段代码(老外写的,很简单啊)

void Update()
{
    float step = speed * Time.deltaTime;
    transform.position = Vector3.MoveTowards(transform.position, targets[index], step);

if (Vector3.Distance(transform.position, targets[index]) < 0.01f)
    {
        if (index == targets.Length - 1)
        {
            index = 0;
        }
        else
            index++;
    }
}
是不是简单的发指,”众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”实际的代码原型就是这么简单,结合上文中提到的MoveTowards的优点,简单嘛?

总结

功能终于实现了,但是还是有瑕疵。下一篇关于这篇的补充和动画系统的细致分析继续进行。

时光煮雨 Unity3d 序列目标点的移动①的更多相关文章

  1. 时光煮雨 Unity3D实现2D人物移动-总结篇

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  2. 时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  3. 时光煮雨 Unity3D实现2D人物动画① UGUI&Native2D序列帧动画

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  4. 时光煮雨 Unity3D让物体动起来③—UGUI DoTween&Unity Native2D实现

    本文首发蛮牛,次发博客园.接系列 第一篇,第二篇,本文为第三篇,再次感谢“武装三藏”在前两篇无私且精彩的问题解答 写在最前,时光煮雨,为了怀念 以下引用曾今读过的一些教程文章 其实这3种动画都有它特定 ...

  5. Unity3D中目标相对自身的前后左右方位判断

    http://blog.csdn.net/cen616899547/article/details/38336185 在做rpg类游戏的过程中,经常遇到要判断周围怪物相对自身的方位   1.判断目标在 ...

  6. Unity基于响应式编程(Reactive programming)入门

    系列目录 [Unity3D基础]让物体动起来①--基于UGUI的鼠标点击移动 [Unity3D基础]让物体动起来②--UGUI鼠标点击逐帧移动 时光煮雨 Unity3D让物体动起来③—UGUI DoT ...

  7. 第一章-第二题Unity3D游戏引擎相关--By林培文

    1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的?  他们的目标都是盈利么?  他们的目标都是赚取用户的现金么?还是别的? 2004年,Unity3D诞生于丹麦哥本 ...

  8. 【noip2005】篝火晚会

    题解: 首先我们要知道一个性质: 把长度为n的序列变成目标序列最多需要n个操作 证明1: 我们可以将原序列上每位上的数字向目标序列相同位置的数字连一条有向边 如: 原序列:   1 2 3 目标序列: ...

  9. 深度学习论文翻译解析(二):An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

    论文标题:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application ...

随机推荐

  1. CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  2. go语言条件语句 if else

    示例: if a < 5 { return 0 } else { return 1 } 关于条件语句,需要注意以下几点:  条件语句不需要使用括号将条件包含起来():  无论语句体内有几条语 ...

  3. swift学习笔记之-高级运算符

    //高级运算符 import UIKit /*高级运算符(Advanced Operators):位运算符.溢出运算符.优先级和结合性.运算符函数.自定义运算符 位运算符: 1.位运算符可以操作数据结 ...

  4. jQuery原型属性constructor,selector,length,jquery和原型方法size,get,toArray源码分析

    首先看一下在jQuery1.7.1中定义的原型属性和方法有哪些? init方法作为实际的构造函数已经详细分析过了,需要了解可以参考http://www.cnblogs.com/yy-hh/p/4492 ...

  5. SAP打印机配置

    SAP打印机配置 一.SAP打印原理 SAP的打印过程分两个步骤: 1.创建假脱机请求: 2.创建输出请求: 在点击打印按钮后,系统会提示创建假脱机请求后,你可以选择直接生成输出请求,或者手动生成输出 ...

  6. EXCEL经纬度转化

    =LEFT(A1,FIND("°",A1)-1)+MID(A1,FIND("°",A1)+1,FIND(CHAR(39),A1)-1-FIND("°& ...

  7. VPN常见错误码(633,628,691)的意思及修复方法

    因为工作原因经常上国外网站需要用到VPN,在这里总结一下使用中可能遇到的一些常见问题.(目前用Nydus觉得还不错) 1.633错误 :由于Windows系统本身的问题,在PPTP协议连接多次并断开之 ...

  8. Android布局优化策略

    我们要知道布局是否合理,可以通过Hierarchy Viewer这个工具.打开Hierarchy Viewer(定位到tools/目录下,直接执行hierarchyviewer的命令,选定需要查看的P ...

  9. 把应用push到/system/app上面后,出现java.lang.UnsatisfiedLinkError的问题

    把应用push到/system/app下面后,加载.so库的问题 01-01 00:07:08.186: E/MessageQueue-JNI(2683): java.lang.Unsatisfied ...

  10. android studio我的习惯操作

    一.修改字体 点击左上角File选择settings....进入界面选择Editor-->Colors&Fonts-->Font点击界面中Save As...在对话框中输入名字点击 ...