场景模型的获取与播放模型动画
来源:互联网 发布:种植牙失败知乎 编辑:程序博客网 时间:2024/05/29 12:27
在场景中的获取模型,并根据服务器推送的消息,播放模型上挂载的动画
从工作到现在,第一次这么正式的写个人博客,有些小激动吧。以前,更多的是去阅读别人的博客,然后获取自己最需要的某个知识点。思考许久,决定把我在项目中学会的一些关于Unity的东西,记录下来。我相信,几年后,我再回过头来看现在的这些博客的时候,会有不一样的感触。
昨天,刚把手上的“案子”提交到公司的SVN上,总算是对自己有一个交代吧。这次的“案子”,主要是让我衔接一个“帮会”活动结束后,获取场景的boss模型,然后在客户端执行boss喝酒动画的播放。最后,接收到服务器推送的消息,客户端执行播放boss离开场景的动画。其实,整个过程和逻辑的组织,还是还比较清晰而简单的。难点在于,一开始,我没有考虑玩家突然下线又突然上线后,应该要看到怎样的场景。还有,玩家在场景里,跑到一个相对较远的地方,然后再往回跑,要看到怎样的场景。这些都是我必须考虑的情况。由于场景中,既要获取boss模型和酒坛模型,而且它们都是由服务器生成的,我客户端这边通过CGameObject.cs这个类去获取场景里的模型后,必须将模型父节点置为null,不然,服务器就会把模型全部删除。之前是用GameObjcet.Instantiate()的方法,实例化一份模型。这样做,会有资源的消耗。在删除模型的方法上,用了项目封装好的CacheObjects.DestroyPoolObject()方法,然后再将对象置为null。在条件判断方面,第一次使用activeInHierarchy这个属性,起到了很大的作用。
这个方法就是获取服务器创建的boss,保存在客户端。
public static void CreatePigFBX(CGameObject cGameObj)
{
if (cGameObj == null || cGameObj.mFBX == null || cGameObj.mFBX.activeInHierarchy == false) return;
mPigFbx = cGameObj.mFBX;
cGameObj.mFBX = null;
mPigFbx.transform.parent = null;
mPigFbx.transform.position = cGameObj.mVisualTrans.position;
//播放离开动画
PlayPigImmortalRunAway();
}
这个方法是客户端播放boss出现的动画。其中,使用了项目封装好的动作代理类AnimationProxy.cs。
public static void PlayPigImmortalAppearAction()
{
if (pigImmortalNpcObj != null && pigImmortalNpcObj.mFBX != null && mWineFbx != null && mWineFbx.activeInHierarchy == true)
{
AnimationProxy aniProxy = pigImmortalNpcObj.mFBX.GetComponent<AnimationProxy>();
if (aniProxy != null)
{
Instance.Get<ActionControl>().DoAction(aniProxy, ActionName.PigAppear);
}
TimerManager.AddTimer("OnPlaySeriesAction", 0.01f, PlayFogEffect);
}
}
这个是控制酒坛运动的方法,主要使用了iTween插件。
public static void ChangeWineJarPosition()
{
if (pigImmortalNpcObj != null && pigImmortalNpcObj.mFBX != null && mWineFbx != null)
{
AssemblerControl.RemoveAttackPointChild(pigImmortalNpcObj.mFBX);
mWineFbx.SetActive(true);
mWineFbx.transform.localScale = new Vector3(7f, 7f, 7f);
Vector3 v3 = Vector3.zero;
v3.x = -12.3f;
v3.y = 121.9f;
v3.z = 34.4f;
Hashtable ht = new Hashtable();
ht.Add("islocal", true);
ht.Add("easeType", iTween.EaseType.linear);
ht.Add("speed", 50.0f);
ht.Add("time", 1.5f);
ht.Add("position", v3);
iTween.MoveTo(mWineFbx, ht);
TimerManager.AddTimer("OnTriggerWineJarCrack", 0.15f, TriggerWineJarCrack);
}
}
目前,在考虑用iTween插件让酒坛做抛物线运动。这样出来的效果会更形象一些喏。还有,由于加载模型的动画资源还是比较耗时间,所有在考虑用异步的方式加载动画资源。
继续前行,去探索更多未知的Unity世界。
- 场景模型的获取与播放模型动画
- Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
- Unity3D研究院之FBX模型的载入与人物行走动画的播放
- Unity3D研究院之FBX模型的载入与人物行走动画的播放(十二)
- 第一节:加载鱼的模型和播放动画
- unity3d新版动画系统模型动画播放,暂停,倒退播放
- 模型的动画设置
- 几个著名的3D测试场景与模型
- FBX、DAE模型的格式、导入与骨骼动画
- 软件工程 瀑布模型、原型模型、喷泉模型和V模型的优缺点及适用场景
- 星型模型和雪花模型的应用场景
- 导入Unity的模型在播放动画时手脚会轻微晃动(抖动)
- 服务器模型按场景的选择
- 基于视词袋模型的场景识别
- Xception场景分类模型的实践
- Irrlicht导入3D模型控制动画播放
- Unity3D animation import issue | 模型导入,动画无法播放问题
- Cocos2d-3.x_创建3D精灵,播放模型动画
- 改下拉框的默认样式,有了这个插件什么都是浮云!
- Android官网:Configuring Gradle Builds英译
- linux下面C 利用openssl的AES库加密,解密
- Java时时调度(一)
- 第一篇技术博客,给自己设立个目标
- 场景模型的获取与播放模型动画
- Valid Parentheses LeetCode java
- 概要设计
- 贪心基础题-----结构体简单应用
- MySQL函数之日期和时间函数
- PHP命名空间(namespace)的使用详解
- oracle数据库OracleDBconsole服务无法启动的原因及其解决思路
- 访问外网设置代理IP
- 学习MongoDB(四)——Master/Slave模式