视频展示及项目文件
视频展示:Dinosaur_BigScreen_Vedio
项目文件:Dinosaur_BigScreen_File
制作思路
Dinosaur_BigScreen采用EasyAR SDK,制作过程类似普通的显示操作过程——将模型叠加在真实环境中,用摄像头看到真实环境,通过键盘或内置的自动动作系统,完成模型的运动
1、新建一张Plane作为地面,Plane坐标归零
2、在地面行走的物体,脚要附在地面上
3、Plane附加一个shader“ShadowOnly”(附录),用来接收模型阴影,并将面片透明,透明后便能看到现实中的地面
4、制作天空盒,用全景照片作为天空盒,用于给模型模拟真实光照效果。天空盒可在Scene里面关闭,但关照效果依旧可添加到模型身上
全景照片可用手机拍摄三张上、中、下三个角度全景照片,用PS合成一张全景照片
5、设置模型动画、声音等控制策略
6、发布项目
天空盒制作过程
1、全景照片在Unity中的设置:
2、天空盒材质设置:
3、Lighting-Environment-Skybox Material设置:
部分代码展示
a、控制声音播放速度
代码语言:javascript复制 GetComponent<AudioSource>().clip = BarkAudioClip;
GetComponent<AudioSource>().pitch = 2f;
GetComponent<AudioSource>().Play();
b、更改屏幕分辨率
代码语言:javascript复制Screen.SetResolution(1366, 768, true);
Unity事件的运用
我们可通过代码形式控制播放声音,同样,我们也可以用另外一种形式,在模型的Animation Clip中添加事件的方式,完成声音在合适时机时的播放
1、完成播放声音的方法,注意,脚本中的该部分代码独立于所有API之外,仅供外部调用,并没有在代码中就实现播放功能
代码语言:javascript复制public void Au_Bark()
{
GetComponent<AudioSource>().clip = BarkAudioClip;
GetComponent<AudioSource>().pitch = 2f;
GetComponent<AudioSource>().Play();
}
2、在模型的Perfab-Animation中找到对应的动画
3、点击该动画的Events,可根据下面的动画,在合适时机点击 号,添加事件。Object选上播放声音的脚本,Function填入脚本中控制声音播放的方法,Apply
4、Enjoy
附录:
Shader:ShadowOnly
代码语言:javascript复制Shader "FX/Matte Shadow" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
LOD 200
Blend Zero SrcColor
CGPROGRAM
#pragma surface surf ShadowOnly alphatest:_Cutoff
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
inline fixed4 LightingShadowOnly (SurfaceOutput s, fixed3 lightDir, fixed atten)
{
fixed4 c;
c.rgb = s.Albedo*atten;
c.a = s.Alpha;
return c;
}
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = _Color;
o.Albedo = c.rgb;
o.Alpha = 1;
}
ENDCG
}
Fallback "Transparent/Cutout/VertexLit"
}