本帖最后由 哭唧唧的细狗 于 2023-11-1 15:11 编辑
有些啥不同于以往的内容呢
我想要做一个解谜类游戏,场景不用太大,可重复利用,更多的利用3D空间的特点放置解密元素,有视觉奇观
场景不用太大
太大的场景意味着编辑器加载进入的时间更长,游戏内容更散,花费更多时间制作许多无意义的场景(当然场景里全是漂亮风景,视觉奇观,那自然多一点也没问题,漂亮风景谁不爱)
场景可重复利用
解谜的小单元是独立的箱庭,而各个箱庭之间也可以通过解谜顺序来串联,这样即使是游戏中后期,也能在前期的场景加入解谜内容,达到小场景的复用
通过解谜提示,在场景的特定时期使得特定物件可交互(触发后续解谜事件前,交互无效果,类似什么极限脱出之类的文字解谜游戏桥段)
利用3D空间的特点,制造视觉奇观
这里让我想到2019年TGA的最佳美术指导奖作品《控制》,光线与混凝土空间交织的场景,也是能制造出宏大诗意神秘的氛围
在我视频的例子里,利用了Tween来使得部分箱庭场景翻转,按照一些上古冒险游戏,诸如古墓丽影,神秘海域之类的,场景的变动能带来新的体验(我们又可以利用3D空间做蹦蹦跳跳真可爱的冒险元素了),这样我们还能一鱼多吃,一场景多用
【Tween—补间动画】😈用最简洁的代码实现一些动画效果 - 资源/心得分享 创作者论坛 (ark.online)
射线帮助解谜
不同于之前的find游戏,碰到场景里的东西就算收集,这里的解谜更多的用到射线
【射线检测】😍各种检测,助你快速实现射击类游戏功能 - 资源/心得分享 创作者论坛 (ark.online)
// 点击事件,编辑器里和手机上都能使用该事件达成点击想要的事件效果
input: Gameplay.TouchInput
protected onStart(): void {
this.input = new Gameplay.TouchInput();
// 设置玩家控制器,使用前需调用一次
this.input.setPlayerController();
this.input.onTouchEnd.add((index, location, touchtype) => {
// 转换点击的屏幕坐标为3D世界坐标
let pos = InputUtil.convertScreenLocationToWorldSpace(location.x, location.y)
// 获得点击位置前方方向
let forv = pos.worldDirection;
// 计算点击位置朝向一定距离的终点位置
let endpos = pos.worldLocation.clone().add(forv.multiply(6000));
let hitInfo = Gameplay.lineTrace(pos.worldLocation, endpos, false, true);
if (hitInfo.length > 0) {
for (let hitResult of hitInfo) {
// 在碰撞发生的接触点做些什么
console.log("333333333 ", hitResult.gameObject.guid)
}
}
})
}
关键字:点击获取场景物体、TouchInput、屏幕3D位置
|