当前位置:首页 > JavaScript

js实现妖怪

2026-04-05 05:41:47JavaScript

js实现妖怪

js实现妖怪

JavaScript 实现妖怪效果

要实现妖怪效果,可以通过动画、变形和随机行为来模拟妖怪的运动和外观。以下是几种实现方式:

使用 Canvas 绘制妖怪

const canvas = document.getElementById('monsterCanvas');
const ctx = canvas.getContext('2d');

function drawMonster(x, y) {
    ctx.fillStyle = 'green';
    ctx.beginPath();
    ctx.arc(x, y, 30, 0, Math.PI * 2);
    ctx.fill();

    ctx.fillStyle = 'red';
    ctx.beginPath();
    ctx.arc(x - 10, y - 10, 5, 0, Math.PI * 2);
    ctx.arc(x + 10, y - 10, 5, 0, Math.PI * 2);
    ctx.fill();

    ctx.strokeStyle = 'black';
    ctx.beginPath();
    ctx.arc(x, y + 5, 10, 0, Math.PI);
    ctx.stroke();
}

function animate() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    const x = Math.random() * canvas.width;
    const y = Math.random() * canvas.height;
    drawMonster(x, y);
    requestAnimationFrame(animate);
}

animate();

使用 CSS 动画创建妖怪效果

<div class="monster"></div>

<style>
.monster {
    width: 60px;
    height: 60px;
    background-color: purple;
    border-radius: 50%;
    position: absolute;
    animation: move 3s infinite alternate;
}

@keyframes move {
    0% { transform: translateX(0) rotate(0deg); }
    100% { transform: translateX(300px) rotate(360deg); }
}
</style>

使用 Three.js 创建 3D 妖怪

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const geometry = new THREE.SphereGeometry(1, 32, 32);
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
const monster = new THREE.Mesh(geometry, material);
scene.add(monster);

camera.position.z = 5;

function animate() {
    requestAnimationFrame(animate);
    monster.rotation.x += 0.01;
    monster.rotation.y += 0.01;
    renderer.render(scene, camera);
}

animate();

实现妖怪随机行为

class Monster {
    constructor() {
        this.x = 0;
        this.y = 0;
        this.speed = 2;
    }

    move() {
        this.x += (Math.random() - 0.5) * this.speed;
        this.y += (Math.random() - 0.5) * this.speed;
    }
}

const monster = new Monster();
setInterval(() => {
    monster.move();
    console.log(`Monster position: (${monster.x}, ${monster.y})`);
}, 100);

这些方法可以根据需求组合使用,创造出更复杂的妖怪效果。

标签: 妖怪js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…