2013-08-31 146 views
1

我们正在开发一款关于驾驶意识的游戏。将视频添加到Unity3d

问题是我们需要向用户展示视频,如果他在完成驾驶后出现任何错误。例如,如果他犯了两个错误,我们需要在比赛结束时显示两个视频。

你能帮忙吗?我没有任何想法。

回答

1

Unity会将视频导入为MovieTexture。它将被转换为原生Theora/Vorbis(Ogg)格式。 (如果导入失败,则使用ffmpeg2theora。)

只需将其应用为任何纹理即可。你可以使用飞机或平面立方体。您应该将其localScale调整为您的视频的宽高比(movie.width/(float)movie.height)。

将附加的录音带放入AudioSource。然后致电movie.Play()audio.Play()

您也可以从本地文件路径或网页(以正确的格式)加载视频。

var movie = new WWW(@"file://C:\videos\myvideo.ogv").movie; 

... 

if(movie.isReadyToPlay) 
{ 
    renderer.material.mainTexture = movie; 
    audio.clip = movie.audioClip; 
    movie.Play(); 
    audio.clip.Play(); 
} 
+0

不错的答案,但我认为OP问及“如何为特定的游戏内动作创建重播”,这与“阅读预先注册的视频”有所不同。我添加了自己的答案,希望能够正确理解这个问题。 –

+0

@BiG是的,这会更有意义! – Richard

2

@solus已经给了你一个关于“如何从你的应用程序播放(预注册)视频”的答案。然而,从我所了解的情况来看,您正在询问如何保存(并可视化)一种由玩家执行的“错误”行为的重播。这不是一件容易的事,我不认为你能得到一个有说服力的答案,但只有一些建议。我会尽力给你我自己的。

首先,你应该在竞速车的各个时间段上“捕捉”玩家的汽车位置。例如,您可以每0.2秒读取一次玩家的汽车位置,并将其保存到结构中(例如:列表)。

然后,你会实现一些逻辑来检测“错误”行为(崩溃,超速......他们显然取决于你的游戏)和参考保存到对[“错误”,“有关该列表的一部分包含汽车对该事件的立场“]。

现在,你有你需要什么重建行动重播:那就是,使汽车“驾驶单”,通过读取先前保存的位置(这将作为航点作用产生的路由) 。显然,你还必须处理相机的位置和旋转:只要将它连接到汽车(如正常的“游戏中”动作),或者修改它,以捕捉更有趣的角度,如同AAA赛车游戏(当然,这会使整个任务更加困难)。

+2

资产商店有两个选项:[EZ Replay Manager](https://www.assetstore.unity3d.com/#/content/3584)和[InputVCR](https://www.assetstore.unity3d .COM /#/内容/ 3071)。 – Richard

+0

@solus:对,我忘了提及它们。顺便说一句,前者包含一个限制版本,免费发行(完整版约80美元,我认为)。相反,不知道后者。 –

0

使用MovieTexture,但不要忘记安装QuickTime,您需要它到import movie clip(例如.mov文件)。