关于Unity3D的一些笔试题(4)

1、Unity四种标准的光照模型是什么,以及高光模型的两个公式是什么

  环境光、自发光、高光、漫反射    Lambert:C(diffuse)=C(light)*m*max(0,N*L)  Phong: 


2、一个游戏对象最终渲染到屏幕上,经过那几个坐标变换

   本地坐标系--世界--》视野----》裁剪--》屏幕DirectX windows屏幕坐标系 左下角(0,0) OpenGL(右下角)


3、如何实现磁铁效果?比如酷跑游戏中,获得磁铁道具后,自动吸附附近金币的效果。

获得磁铁效果后,主要流程可以分为3步:

首先判断金币是否进入磁铁有效范围(圆半径,距离,矩形,collider触发器等方式都可以)接着可以使用差值运算方法,Lerp方法或ITween等插件或者类似方法对金币做一个缓动效果吸附的动画,最后判断动画到达目标点后(碰撞器,触发器,计时等)进行销毁加分等处理即可。

①在玩家身上相同的坐标位置创建一个空的gameobject作为自物体,添加圆形或者球形碰撞器(根据实际要求2D或者3D)来选择,勾选istrigger作为触发器,触发器的范围即为磁铁吸附范围,添加刚体,取消勾选useGravity,gameobject.setActive(false);

②当玩家获得磁铁道具后,控制该gameobject.setActive(true);

③在金币上挂载脚本:


4、向量的点积,叉积,在游戏中的应用(分别,举一个例子说明)

 通过点积Vector3.Dot,可以计算两个向量的夹角的。Vector3.Cross 可以求两个向量的叉积。Vector3.Dot(transform.forward, target.position)返回值为正时,目标在自己的前方,反之在自己的后方

判断目标在自己的左右方位可以使用下面的方法:

Vector3.Cross(transform.forward, target.position).y

返回值为正时,目标在自己的右方,反之在自己的左方通过点积可以计算两个向量的夹角,叉积可以判断目标在自己的方位。向量单位化后可以在游戏中用来计算怪物视野张角;玩家视野张角;NPC视野张角等,完成巡逻索敌等一些功能。


5、请写出ShaderLab中的固定着色器的程序结构


6、Mesh,Sphere,Box,Capsule,四种碰撞器。请按照性能开销由小到大进行排序。

答:collider的性能和效率大概的顺序是:Sphere Collider > Capsule Collider> Box Collider > Mesh Collider。取决于碰撞的定点数量和计算复杂度



7、静态成员与实例成员的区别

静态成员:static关键字、类名调用、可以访问静态成员、不可以直接访问实例成员、调用前初始化

实例方法:不需要static、使用实例对象调用、可以访问静态成员、可以直接访问实例成员、实例化对象初始化


8、什么是渲染管道?

是指在显示器上为了显示出图像而经过的一系列必要操作。 渲染管道中的很多步骤,都要将几何物体从一个坐标系中变换到另一个坐标系中去。

主要步骤有:
本地坐标->视图坐标->背面裁剪->光照->裁剪->投影->视图变换->光栅化。


9、NGUI中八个内置事件函数

    OnClick、OnValueChange.........

    

10、Unity Shader分为哪几种着色器。

    表面着色器,顶点片源着色器,固定功能着色器。

猜你喜欢

转载自blog.csdn.net/ji2570489271/article/details/78667409
今日推荐