用户:
GPUawa查看:9 回复:8 评论:9 创建时间:2022-04-29T21:51:31
Hello大噶好,我是来自(喵本来就是猫站过去的)box3的屑)
大家有在肝创作节吗?
(反正我在肝,还是马里奥)
今天,我就在这偷(喵图是自己的)来亿些关于马里奥的代码~
话不多说,先要准备素(shi)材(cai):


全图需要这么少的(真少啊!)素(shi)材(cai)
今天我们要着重讲的是:怪物和食人花
上菜!
console.clear()
//搜索水管、食人花和板栗
global.$=world.querySelectorAll
$("#水管-1").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(0,-2.5,0))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 3 * 5,
})
})
$("#马里奥-水管-1").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(0,-2.5,0))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 3 * 6,
})
})
$("#食人花-1").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(0,-7,0))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 5*6,
})
})
$("#板栗-1").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(1,0,2))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 5*3,
})
})
$("#板栗-2").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(-2,0,3))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 5*3,
})
})
$("#板栗-3").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(4,0,3))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 5*4,
})
})
$("#板栗-4").forEach(async(e)=>{
e.animate([
{position:e.position},
{position:e.position.add(new Box3Vector3(-5,0,3))}
],{
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
duration: 5*5,
})
})
以上就是动画效果,接下来是道大菜:
碰到食人花、板栗就让玩家倒地!
for (const e of world.querySelectorAll('*')) {
if (e.id.startsWith('食人花-1')||e.id.startsWith('食人花-2')) {
e.collides = true
e.fixed = true
e.onEntityContact(async({ other }) => {
if (other.isPlayer) {
if (other.hp!=0){
//other.player.music.sample=''
other.hurt(100)
}
}
})
}else if (e.id.startsWith('板栗')){
e.collides = true
e.fixed = true
e.onEntityContact(async({ other }) => {
if (other.isPlayer) {
if (other.hp!=0){
//other.player.music.sample=''
other.hurt(100)
}
}
})
}
}
注:注释部分后面的教程会用到~别删掉哦~
好了,今天就先教这么多~
下期预告:终点!
bye~
给屑之喵封装的动画代码)(()()()()注:by可乐
async function animate(selector, startPos, endPos, durations, duration) {
let elevator = world.querySelector(`${selector}`) //获取电梯板实体
elevator.fixed = true//不受外力影响
elevator.collides = true//允许碰撞
elevator.animate([
{ position: startPos, duration: durations[0] },//停留在地面
{ position: startPos, duration: durations[1] },//用于地面往楼顶移动
{ position: endPos, duration: durations[2] },// 停留在楼顶
{ position: endPos, duration: durations[3] },//从楼顶回到地面
], {
duration: 16 * duration,
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
});
点赞0
评论