unity3D龚老师的坦克克星里的anisprite里的unity spriterendererr那里总是有错误,不知道为什

程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之使用Animation编辑器编辑动画(五十四)
Unity3D研究院之使用Animation编辑器编辑动画(五十四)
围观199192次
编辑日期: 字体:
Unity提供了Animation编辑器,它可以为我们编辑物理动画。举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互。如果这个秋千也用代码来写控制它来回摇动,会感觉小题大做。此时完全可以使用Animation编辑器来完成。但是它目前还不能编辑 FK 和 IK动画,所以编辑器中编辑动画的种类还是有限的,如果有一天FK 和 IK动画都可以在Unity中编辑了 那就给力了嚯嚯。。。如下图所示,首先在Hierarchy视图中创建一个游戏对象,这里我就创建一个立方体Cube对象。鼠标保持选中状态,然后在Unity导航菜单栏中选择Window-&Animation将呼出动画编辑窗口。
如下图所示,Animation窗口弹出后,点击左上角那个“小红点”按钮。因为默认新建的Cube对象是没有动画的,所以这里将弹出创建动画窗口。在窗口中点击Save,此时一个名叫New Animation的动画文件将被保存在Project视图中。
如下图所示,此时动画将处于编辑中模式, 在右上方空白处点击鼠标右键,即可添加一个Frame , 点击Frame就会出现一道竖向的红线,上面对应着Frame的时间,这时候在左侧Transform中可以修改每一帧模型的位置,或者在编辑器中也可以修改,数值同样会被保存在每一帧的Transform中。
当你的帧编辑完成后,点击上图左上角那个运行的按钮。你可以在游戏视图中看到这个立方体对象已经按照我们设定的每帧的位置在播放动画了。图中左下角Show:all右侧可以设置动画的播放类型。为了看的清楚,这里我选择PING PONG让动画来回一直播放。动画编辑完成后,点击图中左上角“小红点”按钮 退出动画编辑模式。
退出动画编辑模式后,如下图所示,将刚刚编辑完的动画剪辑拖拽至立方体对象的Animation中,勾选Play Automatically自动播放。此时运行游戏你会发现立方体对象已经按照之前编辑的方式播放动画。
上面介绍的方式我没有写任何一行代码,如果你想动态的监听一些播放事件, 比如当播放几秒的时候执行几行代码。此时你可以使用动画的事件来完成。先创建一条普通的脚本。把它绑定在Cube对象身上。在脚本中我写了两个方法 Event0()和Event1()。
123456789101112131415
using UnityEngine;using System.Collections;&public class NewBehaviourScript : MonoBehaviour{ void Event0() {
Debug.Log("Event0"); }& void Event1() {
Debug.Log("Event1"); }}
我们继续呼出Animation编辑窗口,如下图所示,在时间轴的空白处单机鼠标右键可以添加一个动画事件。 然后会弹出Edit Animation Event窗口,中间有一个Function的选项,Event0()就会对应到上面代码中 Event0的方法。你还可以在脚本中继续添加方法,在Function:的下拉菜单中都会看到。图中我在0:10处添加了一个动画事件,对应在Event0方法中,那么当动画播放0.10s的时候程序将会进入Event0方法中。
怎么样?动画事件还是比较好理解吧。讲到这里你是不是想问我?能不能让美术把动画都在Unity中来完成。答案是否定的,因为它不支持FK 和IK动画,骨骼连带动画还是得在3DMAX 或maya中来完成。如下图所示你也可以打开一个美术在3DMAX 或者 maya中做的动画,这里会显示Read-only表示只读,你不能继续修改它。
Animation编辑器只能修改当前节点的动画,如果你想编辑它的子节点动画的话。只需现在父节点中找到某个子节点对象,然后在window-&Animation中呼出编辑器窗口即可开始编辑。
一口气写了这么多,最后祝大家学习愉快。哇咔咔。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!
Pingback 引用通告:
Pingback 引用通告:程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
NGUI研究院之在Unity中使用贝塞尔曲线(六)
NGUI研究院之在Unity中使用贝塞尔曲线(六)
围观53033次
编辑日期: 字体:
鼎鼎大名的贝塞尔曲线相信大家都耳熟能详。这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦。贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是起点,一个是终点。在这条曲线之上还会有两个可以任意移动的点来控制贝塞尔曲线的角度。如下图所示,点1 和点4 就是起点和终点,点2 和点3 就是控制曲线角度的两个动态点。
如下图所示。使用拖动条来让曲线发生旋转,大家会看的更加清晰。目前我们看到的被塞尔曲线是在平面中完成的,其实贝塞尔曲线是完全支持3D中完成,这里是为了让大家看的更加清楚MOMO将忽略Z曲线的Z轴。UnityAPI文档中有贝塞尔曲线的方法,可是只支持编辑器中使用,也就是说无法在程序中使用。那么本篇文章我们利用贝塞尔曲线的数学原理以及LineRenderer组件来完成在Unity中使用贝塞尔曲线。
创建一个U3D的工程,创建一个新游戏对象,绑定LineRenderer组件。
Bezier.cs 这里是贝塞尔曲线的公式C#版本
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
using UnityEngine;&[System.Serializable]&public class Bezier : System.Object&{&&&&&public Vector3 p0;&&&&&public Vector3 p1;&&&&&public Vector3 p2;&&&&&public Vector3 p3;&&&&&public float ti = 0f;&&&&&private Vector3 b0 = Vector3.zero;&&&&&private Vector3 b1 = Vector3.zero;&&&&&private Vector3 b2 = Vector3.zero;&&&&&private Vector3 b3 = Vector3.zero;&&&&&private float Ax;&&&&&private float Ay;&&&&&private float Az;&&&&&private float Bx;&&&&&private float By;&&&&&private float Bz;&&&&&private float Cx;&&&&&private float Cy;&&&&&private float Cz;&&&&&// Init function v0 = 1st point, v1 = handle of the 1st point , v2 = handle of the 2nd point, v3 = 2nd point&&&&&// handle1 = v0 + v1&&&&&// handle2 = v3 + v2&&&&&public Bezier( Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3 )&&&&&{&&&&&&&&&this.p0 = v0;&&&&&&&&&this.p1 = v1;&&&&&&&&&this.p2 = v2;&&&&&&&&&this.p3 = v3;&&&&&}&&&&&// 0.0 &= t &= 1.0&&&&&public Vector3 GetPointAtTime( float t )&&&&&{&&&&&&&&&this.CheckConstant();&&&&&&&&&float t2 = t * t;&&&&&&&&&float t3 = t * t * t;&&&&&&&&&float x = this.Ax * t3 + this.Bx * t2 + this.Cx * t + p0.x;&&&&&&&&&float y = this.Ay * t3 + this.By * t2 + this.Cy * t + p0.y;&&&&&&&&&float z = this.Az * t3 + this.Bz * t2 + this.Cz * t + p0.z;&&&&&&&&&return new Vector3( x, y, z );&&&&&}&&&&&private void SetConstant()&&&&&{&&&&&&&&&this.Cx = 3f * ( ( this.p0.x + this.p1.x ) - this.p0.x );&&&&&&&&&this.Bx = 3f * ( ( this.p3.x + this.p2.x ) - ( this.p0.x + this.p1.x ) ) - this.Cx;&&&&&&&&&this.Ax = this.p3.x - this.p0.x - this.Cx - this.Bx;&&&&&&&&&this.Cy = 3f * ( ( this.p0.y + this.p1.y ) - this.p0.y );&&&&&&&&&this.By = 3f * ( ( this.p3.y + this.p2.y ) - ( this.p0.y + this.p1.y ) ) - this.Cy;&&&&&&&&&this.Ay = this.p3.y - this.p0.y - this.Cy - this.By;&&&&&&&&&this.Cz = 3f * ( ( this.p0.z + this.p1.z ) - this.p0.z );&&&&&&&&&this.Bz = 3f * ( ( this.p3.z + this.p2.z ) - ( this.p0.z + this.p1.z ) ) - this.Cz;&&&&&&&&&this.Az = this.p3.z - this.p0.z - this.Cz - this.Bz;&&&&&}&&&&&// Check if p0, p1, p2 or p3 have changed&&&&&private void CheckConstant()&&&&&{&&&&&&&&&if( this.p0 != this.b0 || this.p1 != this.b1 || this.p2 != this.b2 || this.p3 != this.b3 )&&&&&&&&&{&&&&&&&&&&&&&this.SetConstant();&&&&&&&&&&&&&this.b0 = this.p0;&&&&&&&&&&&&&this.b1 = this.p1;&&&&&&&&&&&&&this.b2 = this.p2;&&&&&&&&&&&&&this.b3 = this.p3;&&&&&&&&&}&&&&&}&}
MyBezier.cs 把它直接挂在摄像机上 ,控制拖动条来控制贝塞尔曲线、
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
using UnityEngine;&public class MyBezier : MonoBehaviour&{&&&&&//贝塞尔曲线算法类&&&&public Bezier myBezier;& //曲线的对象 public GameObject Yellowline;& //曲线对象的曲线组件 private LineRenderer YellowlineRenderer;&&&&&//拖动条用来控制贝塞尔曲线的两个点 public float hSliderValue0; public float hSliderValue1;&&&&&void Start()&&&&{&&&& //得到曲线组件
YellowlineRenderer = Yellowline.GetComponent&LineRenderer&();
//为了让曲线更加美观,设置曲线由100个点来组成
YellowlineRenderer.SetVertexCount(100);&&&&}& void OnGUI() {
//拖动条得出 -5.0 - 5.0之间的一个数值
hSliderValue0 = GUI.HorizontalSlider(new Rect(25, 25, 100, 30), hSliderValue0, -5.0F, 5.0F);
hSliderValue1 = GUI.HorizontalSlider(new Rect(25, 70, 100, 30), hSliderValue1, -5.0F, 5.0F); }&&&&&void Update()&&&&{&&&& //在这里来计算贝塞尔曲线&&&& //四个参数 表示当前贝塞尔曲线上的4个点 第一个点和第四个点&&&& //我们是不需要移动的,中间的两个点是由拖动条来控制的。&&&&&&&&myBezier = new Bezier( new Vector3( -5f, 0f, 0f ),&&new Vector3( hSliderValue1, hSliderValue0 , 0f ),&&new Vector3( hSliderValue1, hSliderValue0, 0f ), new Vector3( 5f, 0f, 0f ) );&
//循环100遍来绘制贝塞尔曲线每个线段
for(int i =1; i &= 100; i++)
//参数的取值范围 0 - 1 返回曲线没一点的位置
//为了精确这里使用i * 0.01 得到当前点的坐标
Vector3 vec = myBezier.GetPointAtTime( (float)(i *0.01) );
//把每条线段绘制出来 完成白塞尔曲线的绘制
YellowlineRenderer.SetPosition(i -1,vec);
OK 这里贝塞尔曲线的原理就已经完毕。下面我们学习在NGUI中如何使用贝塞尔曲线。刚刚我们说过贝塞尔曲线是由2个固定点 加两个动态点来完成的,其实我们在开发中往往只需要3个点。1 起点 2 中间点 3 结束点 拖动这三个点都可以重新计算曲线的轨迹这样才比较完美。如下图所示,这三个点都是可以任意拖动的,拖动结束后,黑色的线为用户拖拽点连接的直角线段,我们根据这三个点组成的直角线段计算它们之间的贝塞尔曲线,也就是图中黄色的线段。
简单的进行拖拽一下,是不是感觉贝塞尔曲线很酷炫呢?哇咔咔。
我们来看看代码实现的部分,其实原理和上面完全一样。
BallMove.cs绑定在这三个可以拖拽的点上,让拖动小球后小球可跟随手指移动。
12345678910111213141516
using UnityEngine;using System.Collections;&public class BallMove : MonoBehaviour{& void OnDrag (Vector2 delta) {&
float movex = transform.localPosition.x + (delta.x / 3);
float movey = transform.localPosition.y + (delta.y / 3);
//避免越界操作,这里可以进行一些判断
transform.localPosition = new Vector3(movex,movey ,transform.localPosition.z); }&}
如此一来触摸小球后,小球将跟随用户手指移动。下面我们将监听用户触摸小球后的坐标来计算它们三点之间的贝塞尔曲线。
BallInit.cs挂在摄像机上
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
using UnityEngine;using System.Collections;&public class BallInit : MonoBehaviour {& //黑色直角线段 LineRenderer lineRenderer0; LineRenderer lineRenderer1; //贝塞尔曲线 LineRenderer BezierRenderer;& //三个小球触摸对象 public GameObject mark0; public GameObject mark1; public GameObject mark2;& //算法公式类 private Bezier myBezier;& void Start () {
//分别得到黑色直角线段 与黄色贝塞尔曲线的 线段组件
lineRenderer0 = GameObject.Find("line0").GetComponent&LineRenderer&();
lineRenderer1 = GameObject.Find("line1").GetComponent&LineRenderer&();
BezierRenderer = GameObject.Find("Bezier").GetComponent&LineRenderer&();
//黑色直角是有两个线段组成
lineRenderer0.SetVertexCount(2);
lineRenderer1.SetVertexCount(2);
//为了让贝塞尔曲线细致一些 设置它有100个点组成
BezierRenderer.SetVertexCount(100);& }& void Update () {&
//mark0 表示中间的小球
//mark1 表示右边的小球
//mark2 表示左边的小球&
//中间的标志点分别减去左右两边的标志点,计算出曲线的X Y 的点
float y = (mark0.transform.position.y&&- mark2.transform.position.y)&&;
float x = (mark0.transform.position.x&&- mark2.transform.position.x) ; &
//因为我们是通过3个点来确定贝塞尔曲线, 所以参数3 设置为0 即可。
//这样参数1 表示起点 参数2表示中间点 参数3 忽略 参数4 表示结束点
myBezier = new Bezier( mark2.transform.position,&&new Vector3(x,y,0f),&&new Vector3(0f,0f,0f), mark1.transform.position );&
//绘制贝塞尔曲线
for(int i =1; i &= 100; i++)
Vector3 vec = myBezier.GetPointAtTime( (float)(i * 0.01) );
BezierRenderer.SetPosition(i -1,vec);
//绘制直角黑色标志线段
lineRenderer0.SetPosition(0,mark0.transform.position);
lineRenderer0.SetPosition(1,mark2.transform.position);
lineRenderer1.SetPosition(0,mark0.transform.position);
lineRenderer1.SetPosition(1,mark1.transform.position); }}
NGUI部分的源码就不放出来,MOMO将第一个例子的源码放出来,最近生活与工作都有点郁闷,哎~~~ 日子是熬出来,程序也是写出来的,走一步看一步,加油!雨松MOMO祝大家学习愉快,哇咔咔。
下载地址:
参考文章:
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
(参考)Unity3D游戏设计与实现.doc 90页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
分类号:TP31
U D C:D-(
游戏源文件源代码及案例源代码联系mailto:
成都信息工程学院
Frozen游戏设计与实现
论文作者姓名: 龚顺锋
申请学位专业: 数字媒体技术
申请学位类别: 工学学士
指导教师姓名(职称): 魏敏(副教授)
论文提交日期: 日
Frozen游戏设计与实现
为了学习Unity3D游戏引擎,为了进一步了解并熟悉该款引擎,本文描述了如何制作了一个二维的跑酷类游戏项目,这个游戏的背景来源于一部叫做《冰雪奇缘》的电影。通过对该项目的制作和学习,来了解用Unity3D开发游戏的利与弊,以及这款游戏引擎未来的优势。本文所述的游戏项目开发所用的开发工具是Unity3D自带的开发工具,叫做MonoBehaviour,选择的开发语言是C#。该游戏项目是一个小型的2D游戏制作,开发周期短,实现所涉及的技术也是学习Unity3D必备的一些知识,但是也是一些重要的基础知识,很多其他的Unity3D游戏制作,也是通过把Unity3D的各个功能模块一点点组织拼接起来而成的。
关键词:Unity3D;游戏引擎;语言开发环境;跑酷游戏
the Design and Implementation of Frozen Game
In order to know and learn more about Unity3D game engine, this papers describes how I develop a parkour game project whose background comes from a movie called Frozen. Through the study of this game project, we will get to know the pros and cons to use the game engine and it’s advantage of the future. We did this game project using its own development tool named MonoBehaviour. we used C# as its development language. This is a small 2D game with short development period and some basic techniques which are important knowledge.Many other Unity3D games are the union of some Unity3D function parts.
Key words: Unity3D; language dev parkour game 目
论文总页数:28
1.1 Unity3D简介 1
1.2 Unity3D语言开发环境及开发工具 2
1.3 Unity3D应用 2
1.4 Unity3D未来优势 4
2 使用Unity3D开发游戏的优势 4
2.1 跨平台的先进技术 4
2.2 轻松入门 5
2.3 市场影响力广 5
3 研究现状及设计目标 6
3.1 游戏简介及动画制作 6
3.2 游戏类型 7
3.3 游戏前景 7
3.4 技术实现及其优势 8
3.5 游戏项目设计目标 8
4 需要解决的问题 9
4.1 游戏项目中要解决的问题 9
4.2 碰撞检测问题 9
4.3 粒子系统 10
4.4 函数 11
5 游戏总体设计 13
5.1 游戏设计准备阶段 13
5.2 游戏设计制作阶段 14
5.3 游戏设计完成阶段 14
5.4 游戏玩法说明 16
6 游戏简介 16
6.1 游戏背景 16
6.2 敌人 16
6.3 玩家 16
6.4 分数统计 16
7 游戏实现 16
7.1 变量 16
7.2 函数 17
7.3 粒子系统的实现 19
7.4 碰撞检测的实现 21
7.5 音效的实现 21
7.6 游戏通关 22
7.7 游戏失败 23
8 项目总结 23
8.1 总结的目的 23
8.2 关键性问题总结 23
8.3 游戏开发周期 23
参考文献 26
Unity3D简介
Unity3D是由Unity Technologies
正在加载中,请稍后...}

我要回帖

更多关于 unity sprite packer 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信