Unity链表的应用之蛇形动画
2015-06-20 10:09
453 查看
实现的功能:单击创建出一个Cube,跟随前一个运动,位置是前一个Cube的前一秒的位置,类似贪吃蛇。
在场景中创建两个Cube,给一个添加紫色的材质球,另一个添加绿色的材质球。
给紫色Cube添加一个Cubemove脚本,给绿色Cube添加一个FollowCube脚本。
把绿色的Cube拖成预设体,大小改小一点。
紫色Cube挂载的脚本代码:
绿色预设体Cube挂载的脚本代码:
刚开始写这样的博客,把自己做的代码开源分享给大家,有不解的地方可以联系我,我也会再接再厉的。
在场景中创建两个Cube,给一个添加紫色的材质球,另一个添加绿色的材质球。
给紫色Cube添加一个Cubemove脚本,给绿色Cube添加一个FollowCube脚本。
把绿色的Cube拖成预设体,大小改小一点。
紫色Cube挂载的脚本代码:
using UnityEngine; using System.Collections; public class Cubemove : MonoBehaviour { float timer;//游戏运行时间 float nowTimer;//当前时间 FollowCube tail;//指向最后生成的 FollowCube next;//实例化的第二个Cube, Vector3 oldPos;//记录Cube的位置 public GameObject prefab; void Start() { nowTimer = timer;//开始时初始化时间 } void Update() { timer += Time.deltaTime; if (timer - nowTimer >= 1)//每隔一秒时间移动一个单位 { nowTimer = timer;//移动之后把时间赋给当前时间 oldPos = transform.position;//记录位置 transform.Translate(Vector3.forward);//移动 //follew.transform.position = oldPos; if (next) { next.Move(oldPos); } } float h = Input.GetAxis("Horizontal"); if (h > 0) { transform.Rotate(Vector3.up * 90f); } if (h < 0) { transform.Rotate(Vector3.up * -90f); } if (Input.GetMouseButtonDown(0))//单击调用实例化预设体的方法 { AddCube(); } } void AddCube() { GameObject go = Instantiate(prefab, new Vector3(100, 100, 100), Quaternion.identity) as GameObject; if (!next) { next = go.GetComponent<FollowCube >(); tail = next; } else { tail.son = go.GetComponent<FollowCube >();//创建了连接 tail = tail.son; } } }
绿色预设体Cube挂载的脚本代码:
using UnityEngine; using System.Collections; public class FollowCube : MonoBehaviour { Vector3 pos; public FollowCube son; public void Move(Vector3 target) { //先记录下原来的位置 pos = transform.position; //再离开原来位置 transform.position = target; //最后通知小弟移动到pos这个位置 if (son != null) { son.Move(pos); } } }
刚开始写这样的博客,把自己做的代码开源分享给大家,有不解的地方可以联系我,我也会再接再厉的。
相关文章推荐
- VS community 2013 安装配置Xamarin
- 【Unity3d】疑难杂症解决之系统报错:Supplied NxActorDesc is not valid. createActor returns NULL
- Unity着色器入门之一步一步来看坐标系变换
- Unity下的StreamingAssets路径不同平台的读取
- Unity3D实践系列05,为GameObject添加额外属性
- 关于Fatal Error in GC : Too Many threads
- 解读Unity中的CG编写Shader系列六(漫反射)
- 解读Unity中的CG编写Shader系列五(理论知识)
- 解读Unity中的CG编写Shader系列四(unity中的圆角矩形shader)
- 解读Unity中的CG编写Shader系列三
- 解读Unity中的CG编写Shader系列二
- UnityShader实例04:遮挡透明材质
- 解读Unity中的CG编写Shader系列一
- Unity3d《Shader篇》绘制圆角图片
- Unity arm64
- 基于Unity5.0系统的新打包方式 [第一讲]
- Unity 曲线切线模式 的隐藏枚举 KeyFrame.tangentMode
- Unity中的Path对应各平台中的Path
- UnityShader实例03:边缘光材质
- Unity3D实践系列04, 脚本的生命周期