介绍
一款游戏中,一定少不了玩家与NPC的交互,所以今天这节课我们来讲一讲玩家如何与NPC进行交互
玩家交互
玩家交互方式有一下几种
输入 纯话语 选择
准备工作
现在地图中放置一些模型,作为我们的NPC
并且给他们命名
第一只鸡:
第二只鸡:
第三只鸡:
命好名之后,就可以开始编写代码了
编写代码
模型绑定
// 第一只鸡的模型绑定
const kun_1 = world.querySelector("#篮球鸡-1")
kun_1.enableInteract = true;//允许模型与玩家进行交互
kun_1.interactHint = "篮球鸡"; //设置模型头顶上的名字
kun_1.interactColor = new Box3RGBColor(1,0,0); //设置模型头顶上名字的颜色
kun_1.interactRadius = 3 //设置玩家与模型的交互距离
// 第二只鸡的模型绑定
const kun_2 = world.querySelector("#鸡尼太美-1")
kun_2.enableInteract = true;//允许模型与玩家进行交互
kun_2.interactHint = "篮球鸡"; //设置模型头顶上的名字
kun_2.interactColor = new Box3RGBColor(1,0,0); //设置模型头顶上名字的颜色
kun_2.interactRadius = 3 //设置玩家与模型的交互距离
// 第三只鸡的模型绑定
const kun_3 = world.querySelector("#鸡-1")
kun_3.enableInteract = true;//允许模型与玩家进行交互
kun_3.interactHint = "篮球鸡"; //设置模型头顶上的名字
kun_3.interactColor = new Box3RGBColor(1,0,0); //设置模型头顶上名字的颜色
kun_3.interactRadius = 3 //设置玩家与模型的交互距离
交互代码
纯话语交互
kun_1.onInteract(({entity})=>{
entity.player.dialog({
type:Box3DialogType.TEXT,// 交互类型(必须设置)
title:kun_1.id,// 将标题设置为模型的名字(不一定要设置)
lookEye:kun_1,// 交互时要看向的模型(可以是你设置的模型,也可以是玩家,可以不用设置,默认是看向玩家)
lookTarget:entity,// 交互结束是要看向的模型(不一定要设置,默认是玩家)
content:"你好,我是篮球鸡",// 交互内容(必须设置)
})
})
输入型交互
kun_2.onInteract(({entity})=>{
const result = entity.player.dialog({
type:Box3DialogType.INPUT,//必须设置
title:kun_2.id,//不一定要设置
lookEye:kun_2,//不一定要设置
lookTarget:entity,//不一定要设置
content:"请输入我的名字:",//交互内容(不一定要设置)
})
if (result == "鸡尼太美"){
console.log("你输入对了") // 如果输入正确,将会在控制台上答应“你输入对了”
}
else{
console.log("你输入错了") // 如果输入不正确,将会在控制台上输出“你输入错了”
}
})
选择型交互
kun_3.onInteract(({entity})=>{
const result = entity.player.dialog({
type:Box3DialogType.SELECT,
title:kun_3.id,//不一定要设置
lookEye:kun_3,//不一定要设置
lookTarget:entity,//不一定要设置
content:"请选择我的名字:",//交互内容(不一定要设置)
options:['篮球鸡','鸡尼太美','鸡'], //这里设置了选项,选项数无限,必须设置
})
if (result.index == 0){// 选择第一个
console.log("False") // 输入False
}
else if (result.index == 1){
console.log("False") // 输出 False
}
else if (result.index == 2){ // 输出True
console.log("True")
}
})
总结
模型变量.onInteract(({entity})=>{})
如果是关于判断的交互,就得定义一个常量,用来接受玩家的选择或输入
比如(INPUT,SELECT)类型的要定义一个常量
TEXT可定义或不定义都可以,不会导致报错
今天的课程就到这里了,下节课见
记得点个关注呀!!!