这个往往是区分游戏开发外行和内行的标尺。最常见的问题是:动作游戏里,当角色一刀砍下去,刀砍中对方的身体,这是不是模型碰撞?如果你只是用肉眼看,你会觉得就是啊,而且大多引擎都提供了模型碰撞的判定,但是那个判定是给你用来做动作游戏的吗?模型是美术资源,即“视觉”的核心构件之一,如果你需要的是“模型碰撞级”,你也应该用外部工具,把模型动作的每一帧的顶点数据导出数据文件(比如2进制文件或者json等配置文件),依赖于加载这个文件里的数据做碰撞,这才是“模型碰撞”,而不是真的两个美术资源之间产生了碰撞就是碰撞。这可以算是游戏开发外行的典型漏步。
所以游戏开发中,没有任何东西是必须依赖视觉的,如果你也玩过几乎所有市面上的引擎,你会发现有很多引擎里面有2个update(),一个是给逻辑的,在Unity是FixUpdate;一个是给渲染的,在Unity是Update,你可以类比(有点危险,但是那个意思)为2个线程,Update是再根据当前游戏的数据(注意,是数据,仅仅只是数据)做渲染和播放声音,而FixedUpdate是专门用来做逻辑的,之所以他2帧间隔一定是等时间的,是因为这就是逻辑FPS(Frame Per Second),逻辑帧是游戏逻辑世界的最小时间单位,而不是沙雕策划们理解的“秒”。由此你不难看出,视觉和逻辑分离是做游戏的基本功,而FixedUpdate下的逻辑去修改的所有数据,都可能是你帧同步时候的关键数据。
第二个问题:“裁判机”的无能,与想法的漏洞