AnimationCurve
http://blog.sina.com.cn/s/blog_471132920101f8nv.html
说明:
关于animationCurve的使用总结
1 创建,可以新建脚本,创建animationCurve变量,然后直接在脚本上手动拖动可视化创建曲线,也可以用代码创建(这种比较不直观)
2 使用,anim.Evaluate(Time.time)
3 存储,编辑器手动创建曲线,然后代码中读取各项key数据,二进制保存起来,用的时候再读取
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院
using UnityEngine;
using System.Collections;
public class AnimationCurveTutor : MonoBehaviour {
public AnimationCurve anim;
}
双击任意区域内地方,创建关键点。对关键点点鼠标邮件,则出如下界面.
using UnityEngine;
using System.Collections; public class AnimationCurveTutor : MonoBehaviour {
public AnimationCurve anim;
public void Update()
{
transform.position = new Vector3(Time.time, anim.Evaluate(Time.time), 0);
}
}
一:键序列
创建键序列:Keyframe[] ks = new Keyframe[3];
曲线中加入键序列:AnimationCurve curve = new AnimationCurve(ks);
获取曲线中的键序列:curve[index] 或者 curve.keys[index]
添加单键:curve.Addkey(time,value)
anim.postWrapMode = WrapMode.Once;
三:键
Keyframe kf = new Keyframe(time,value);
kf.inTangent = 45;
kf.outTangent = 45;
using UnityEngine;
using System.Collections; public class CreateRuntime : MonoBehaviour {
public AnimationCurve anim = new AnimationCurve();
void Start() {
Keyframe[] ks = new Keyframe[3];
ks[0] = new Keyframe(0, 0);
ks[0].inTangent = 0;
ks[1] = new Keyframe(4, 0);
ks[1].inTangent = 45;
ks[2] = new Keyframe(8, 0);
ks[2].inTangent = 90;
anim = new AnimationCurve(ks);
}
void Update() {
transform.position = new Vector3(Time.time, anim.Evaluate(Time.time), 0);
}
}
using UnityEngine;
using System.Collections;
using UnityEditor; public class EditorCurves :EditorWindow {
AnimationCurve curveX = AnimationCurve.Linear(0,0,10,10);
[MenuItem("Examples/Mine")]
static void Init()
{
EditorWindow window = GetWindow(typeof(EditorCurves));
window.position = new Rect(0,300,200,100);
window.Show();
}
void OnGUI()
{
curveX = EditorGUI.CurveField(new Rect(3,3,position.width-6,15), "Animation on X", curveX);
if(GUI.Button(new Rect(3,60,position.width-6,30),"Generate Curve"))
AddCurveToSelectedGameObject();
}
void AddCurveToSelectedGameObject()
{
if(Selection.activeGameObject) {
FollowAnimationCurveMine comp = Selection.activeGameObject.AddComponent<FollowAnimationCurveMine>();
comp.SetCurves(curveX);
} else {
Debug.LogError("No Game Object selected for adding an animation curve");
}
}
}using UnityEngine;
using System.Collections; public class FollowAnimationCurveMine : MonoBehaviour {
public AnimationCurve curveX;
public void SetCurves(AnimationCurve tmpCurve)
{
curveX = tmpCurve;
}
void Update () {
if(curveX != null)
transform.position = new Vector3(1f*Time.time, curveX.Evaluate(Time.time) * 0.3f,0);
}
}
AnimationCurve的更多相关文章
- Unity利用AnimationCurve做物体的各种运动
之前一直都是自己学习Unity各种做Demo,最近开始正式使用Unity来做一个款2d的游戏. 其中在做一个类似小球弹跳运动的时候遇到了点问题,查找了很多资料,无意间发现AnimationCurve ...
- Unity的AnimationCurve
转自:风宇冲Unity3D教程学院http://blog.sina.com.cn/s/blog_471132920101f8nv.html,本文有多处增删减改,详细内容请查看原文. 1.介绍 Anim ...
- iOS 系统数字键盘左下角加确定按钮
首先在 viewWillAppear 方法中注册监听相应的键盘通知,并且要在 viewWillDisappear 方法中注销通知- (void)viewWillAppear:(BOOL)animate ...
- 使用javascript生成的植物显示过程特效
查看效果:http://keleyi.com/keleyi/phtml/html5/33.htm .NET版本:http://keleyi.com/a/bjac/66mql4bc.htm 完整HTML ...
- iOS8.3发布了Swift 1.2带来哪些新变化
苹果前几日在面向开发者推送iOS 8.3 Beta的同时,还发布了版本号为6D520o的Xcode 6.3 Beta,其中便包含了iOS 8.3 Beta和OS X v10.10 SDK,并进一步提升 ...
- 使用 Sublime Text 2 开发 Unity3D 项目
用 Sublime 已经有很长一段时间,很舒适,很贴心,根本停不下来.之前因为是开发页游,所以是用 AS3 开发,近段时间,新开了个手游项目,引擎方面选定了 Unity3D,老实说,之前没有太多的 3 ...
- Unity3D 第一人称控制器 C#脚本
CharacterMotor.cs using UnityEngine; using System.Collections; /** * @Author : www.xuanyusong.com */ ...
- 转一篇Unity的相机动画控制
最近真是忙,连研究细看的时间都没有了,原帖地址:https://alastaira.wordpress.com/2013/11/08/smooth-unity-camera-transitions-w ...
- [转]unity3d 脚本参考-技术文档
unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...
随机推荐
- 4.Web工程师的开发工具箱
第四章 效率工具ShadowSocks window代理服务器FalconProxy chrome代理服务器stackoverflow.com Stack Overflow是一个与程序相关的IT技术问 ...
- 【转】数据存储——APP 缓存数据线程安全问题探讨
http://blog.cnbang.net/tech/3262/ 问题 一般一个 iOS APP 做的事就是:请求数据->保存数据->展示数据,一般用 Sqlite 作为持久存储层,保存 ...
- 《C prime plus (第五版)》 ---第11章 字符串和字符串函数
11-1:字符串表示和字符串I/O 1.首先先通过一个整体的例子来初步了解建立,读入和输出字符串的几种方式. #include<stdio.h> #define MSG "你一定 ...
- android的GPS代码分析JNI如何HAL之间如何设置回调函数【转】
本文转载自:http://blog.csdn.net/kmesg/article/details/6531577 本文只关注JNI和HAL的接口部分 在jni的android_location_Gps ...
- 使用IE11的F12开发人员工具进行网页前端性能测试
用IE访问被测网站(我的是IE11,EDGE浏览器相同),定位到你要测试的动作所在页面或被测页面的前一页.按F12调出开发人员工具,其它的功能我就不介绍了,直接切换到性能选项卡. 根据提示按快捷键ct ...
- linux 进程学习笔记-等待子进程结束
<!--[if !supportLists]-->Ÿ <!--[endif]-->等待子进程结束 pid_t waitpid(pid_t pid, int *stat_loc, ...
- python爬虫知识点总结(四)Requests库的基本使用
官方文档:http://docs.python-requests.org/en/master 安装方法 命令行下输入:pip3 install requests.详见:https://www.cnbl ...
- poj1325机器工作——二分图最小点覆盖
题目:http://poj.org/problem?id=1325 二分图求最大匹配,即为最小点覆盖: 一开始我写得较麻烦,求出最大匹配又去搜增广路,打标记求最小点覆盖: 然而两种方法都没写“ans= ...
- WPF中Visible设为Collapse时,VisualTreeHelper.GetChildrenCount为0
今天遇到一个奇怪的问题, 在给一个控件内的子元素绑定事件时,失败. 发现原因是,这个控件初始化时Visible="Collapse",这时控件内的可视树就没有生成.导致绑定事件失败 ...
- POJ1287(最小生成树入门题)
Networking Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7753 Accepted: 4247 Descri ...