我们正在开发一款关于驾驶意识的游戏。
问题是如果他在完成驾驶后犯了任何错误,我们需要向用户显示视频。例如,如果他犯了两个错误,我们需要在游戏结束时显示两个视频。
你能帮忙吗?我没有任何想法。
我们正在开发一款关于驾驶意识的游戏。
问题是如果他在完成驾驶后犯了任何错误,我们需要向用户显示视频。例如,如果他犯了两个错误,我们需要在游戏结束时显示两个视频。
你能帮忙吗?我没有任何想法。
@solus 已经给了你一个答案,关于“如何从你的应用程序中播放(预先注册的)视频”。但是,据我了解,您是在询问是否为玩家执行的“错误”动作保存(和可视化)一种重播。这不是一件容易的事,我认为您不会得到详尽的答案,而只能得到一些建议。我会尽量给你我自己的。
首先,你应该“捕捉”玩家汽车在不同时间段的位置。例如,您可以每 0.2 秒读取玩家的汽车位置,并将其保存到结构中(例如:列表)。
然后,您将实现一些逻辑来检测“错误”动作(崩溃、超速......它们显然取决于您的游戏)并保存对 ["mistake", "list of the relevant section contains car's position for那个事件”]。
现在,您已经拥有了重新创建动作回放所需的一切:也就是说,通过读取先前保存的位置(将充当生成路线的航路点)使汽车“单独驾驶”。
显然,您还必须处理相机的位置和旋转:只需将其固定在汽车上(作为正常的“游戏中”动作),或者在时间修改它以捕捉更有趣的角度,如 AAA 赛车游戏做(当然,这会使整个任务变得更加困难)。
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();
}
使用 MovieTexture,但不要忘记安装 QuickTime,您需要它来导入影片剪辑(例如 .mov 文件)。