itween抛物线线性移动

一直以来没时间写博客。今天记录一下itween的抛物线移动用法。

以一个实例为主讲述:

首先在场景中建立一个cube用他代替plane因为这样可以减小资源,cube属性如图。

plane用的是mesh collider会导致资源变大,所以用cube代替做出如图场景(黄色地板为cube白色是plane)。

plane在这里就是跟随鼠标的作用所以把他的mesh collider删除了。

下面讲述一下鼠标跟随的脚本:如下:

1.using UnityEngine;
2.using System.Collections;
3.
4.	public class course : MonoBehaviour {
5.	    public GameObject target;
6.
7.
8.
9.	    void Start () {
10.
11.	    }
12.
13.
14.	    void Update () {
15.	        //鼠标跟随
16.	        Ray ray = camera.ScreenPointToRay(Input.mousePosition);
17.	        RaycastHit hit;
18.	        if (Physics.Raycast(ray, out hit))
19.	        {
20.	            if (hit.transform.gameObject.tag == "tile")
                 /*注意这里的tile是cube也就是在寻找鼠标在cube上移动的位置。从本文最上面那张Cube属性图就可以看到的他的Tag是tile.*/
21.	            {
22.	                iTween.MoveUpdate(target, new Vector3(hit.point.x, 0.1f, hit.point.z),.1f);
                <pre name="code" class="csharp">/*这里的target目标就是plane,我们就是要实现plane跟随鼠标动,这里在面板里要把plane这个预设体拖到target里。而代码里的<pre name="code" class="csharp" style="font-size:24px;">new Vector3(hit.point.x, 0.1f, hit.point.z),.1f  这句则是:hit表示的是鼠标的位置分别有XYZ轴位置,只有X,Z两个轴运动所以把Y写成0.1f。最后面还有个.1f表示的是plane跟随鼠标的时间。时间越长就表示是plane走的越慢,鼠标到 了目标地点plane还是要继续走过来 */

 }
}
 }
 }

<span style="font-size: 9pt; font-family: 宋体; border: 1pt none windowtext; padding: 0cm;">只要把这个脚本</span><span lang="EN-US" style="font-size: 9pt; font-family: Consolas; border: 1pt none windowtext; padding: 0cm;">course</span><span style="font-size: 9pt; font-family: 宋体; border: 1pt none windowtext; padding: 0cm;">拖动给相机运行就可以了如下图:</span>

鼠标跟随可以实现了。在看一下点击鼠标有个小球会跑到鼠标点击位置。下面是course 的全部内容:

 1.	using UnityEngine;
2.	using System.Collections;
3.
4.	public class course : MonoBehaviour {
5.	    public GameObject target;
6.	     Vector3[] paths = new Vector3[3];/*这里弄个3维的数组分别表示小球的起始点和目标点还有起始点和目标点中间的一个点。*/
7.	    public GameObject ballPerfab;/*就在代码里解释了:这里的<pre name="code" class="csharp" style="font-size:24px;">ballPerfab就是上图中course脚本里的BallPerfab,要注意把sphere放到里面。这就 是哪个要运动的小球*/
// Use this for initialization
void Start () {}void Update () { //鼠标跟随刚才上面讲过了
 Ray ray = camera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.transform.gameObject.tag == "tile") { iTween.MoveUpdate(target, new Vector3(hit.point.x, 0.1f, hit.point.z),.1f);  

1.	if (Input.GetMouseButtonDown(0))//这里加个条件就 是鼠标单击的时候执行下面语句
2.	               {
3.	                   GameObject ball=(GameObject ) Instantiate(ballPerfab, new Vector3(0, 0, 0), Quaternion.identity);//实例化ball
4.
5.	                   paths[0] = new Vector3(0, 0, 0);//起始点
6.	                   paths[2] = hit .point ;//终点,即鼠标点击点
7.	                   paths[1] = new Vector3(paths [1].x /2, 1, paths [2].z /2);/*起点到终点之间的点,注意XZ这两个轴,一个用是起始点坐标的一半另个是终点坐标的一半*/
8.	                   iTween.MoveTo(ball, iTween.Hash("path", paths));/*其实这个就是路径了,一个哈希表但是官网的是下面那句注释掉的话,只是加了一些其他条件属性罢了*/
9.	                //   iTween.MoveTo(ball, iTween.Hash("path", paths, "oregin", true, "movetopath", true, "time", 1, "easytype", iTween.EaseType.linear));
10.
11.	                   Destroy(ball, 2);//clone了一堆小球总要删除吧所以每两秒就destroy一个。
12.	               }
13.
14.	           }
15.
16.	       }
17.
18.
19.	}
20.
21.	      void OnDrawGizmos()/*这个是path的路线及其颜色设定如下图可见*/
22.	       {
23.	           iTween.DrawLine(paths, Color.blue);
24.	           Debug.Log("1111111111111111111111111111111");
25.	           iTween.DrawPath(paths, Color.red);

时间: 2024-11-05 00:05:34

itween抛物线线性移动的相关文章

用iTween在Unity实现自动寻路的功能

using unityEngine; using System.Collections; public class "定义的脚本名字": MonoBehaviour { public Transform[] paths; //设置路径 void  Start() { Hashtable args=new  Hashtable(): args.Add("path",paths) //设置所有的点 args.Add("easeType",iTween

样条之抛物线(一元三点)插值函数

它是根据给定结点上的数值,用抛物插值计算指定插值点处的函数.一元三点插值算法是一种精度更高的插值算法,使用这种方法插值出来的曲线不像线性插值算法那样在分段点的地方出现折点,显得更为平滑.但它是使用二次函数来进行曲线的拟合,曲线中还是会有不平滑的情况. 关于插值与样条的介绍请看:http://www.cnblogs.com/WhyEngine/p/4020294.html 核心代码: /////////////////////////////////////////////////////////

itween使用案例

1. 控制小球的移动,以及参数的设定,脚本挂载在需要移动的物体上 using UnityEngine;using System.Collections; public class ItweenMoveCntrl : MonoBehaviour { void Start()    { //以键值对的形式保存iTween所用到的参数        Hashtable args = new Hashtable(); //这里是设置类型,iTween的类型又很多种,在源码中的枚举EaseType中   

stylie工具轻松搞定css3抛物线动画

自从CSS3引入了动画(transition和@keyframes,还有与之搭配的transform)之后,写动画也变的越来多越来越容易. 可是当我们遇到需要利用数学公式的复杂动画时,却一筹莫展,只能怪小时候数学没学好(可能是语文老师教的).那么问题来了,但我拿到要实现这样的需求,该如何: 可能我们会去苦恼,加班熬夜的去补功课去解决,可是这样真的很费劲,那么,我们就来分析一下如何,快速解决 要想做出这样的动画,我们必先知道其运动的原理,不是吗,鉴于抛物线太多了,这里只对最简单的匀变速曲线运动做分

如何实现高抛平抛发射?从抛物线说起!Cocos Creator!

游戏中经常会遇到抛物线轨迹问题,为此研究如何运用数学物理知识,实现高抛平抛效果.文章底部获取完整代码! 效果预览: 先确认已知条件: 起点发射速度大小 V 重力加速 G 起始点与经过点 需要求出: 发射角度 a 对于抛物线运动,可以分两个方向去看.水平方向,匀速直线运动.垂直方向匀加速运动.所以可以得出以下式子: 在把 t 和 v_y 带入最后一个式子,化简整理后,可以得到一个关于 tan a 的一元二次方程. 再根据一元二次方程通解公式,可以解出角度的 tan 值. 接着使用反三角函数,求出角

【opencv入门之二】感兴趣区域ROI,线性混合addWeighted

参考网站: http://blog.csdn.net/poem_qianmo/article/details/20911629 1.感兴趣区域ROI //[2]定义一个Mat类型并给其设定ROI区域 Mat imageROI = srcImage1( Rect(200, 250, logoImage.cols, logoImage.rows )); //[3]加载掩摸(必须是灰度图) Mat mask = imread( "dota_logo.jpg", 0 ); //[4]将掩摸拷贝

线性筛法

关于线性筛法 线性是指O(n)内筛掉所有合数,还有一种方法叫埃氏筛法,我先证明埃氏筛法效率低,也就是会有重复. 证明如下: 埃氏筛法的原理是找到一个素数后,它的1~n倍就会被筛掉,任何一个合数都可以被拆成一个质数*合数的形式,我们对每一个质数对应的可能的(合)数都枚举了,这就保证了所有可能的合数都被筛掉了.为什么不是最优呢?问题出在那个质数上,对于一个合数m,m=h*P,P是质数且P>m的最小质因数,那么m也可以表示为m=H*p,(H是个比h大的合数,p是m的最小质因数),这样我们在枚举p的倍数

bzoj 3309 DZY Loves Math - 莫比乌斯反演 - 线性筛

对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b). Input 第一行一个数T,表示询问数. 接下来T行,每行两个数a,b,表示一个询问. Output 对于每一个询问,输出一行一个非负整数作为回答. Sample Input 4 7558588 9653114 6514903 445

Linux 内核中逻辑地址/虚拟地址/线性地址三者的区别

本博文引自我的知乎回答:Linux 线性地址,逻辑地址和虚拟地址的关系? 为了防止歧义,以下术语都用英文.部分术语不做解释了,不然答案就太长了. 以下讲解都是以代码段为例 在 Intel 平台下,逻辑地址(logical address)是 selector:offset 这种形式,selector 是 CS 寄存器的值,offset 是 EIP 寄存器的值.如果用 selector 去 GDT( 全局描述符表 ) 里拿到 segment base address(段基址) 然后加上 offse