ノート

ネオンヴェイル・インフィニティ・オーバードライブ

フリーのプロンプト百科事典 Wikiprompt より

ネオンヴェイル・インフィニティ・オーバードライブ ネオンに浸された、高速エンドレスランナーゲームのプロトタイプを作成するためのプロンプト。3つのサイバーパンクステージと、強烈なビジュアルポストプロセッシングエフェクトを備え、ブラウザ上で動作するテクニカルデモとして設計されています。

プロンプト内容保存

🌐
import React, { useRef, useEffect, useMemo, useState, useCallback } from 'react'; import * as THREE from 'three'; import { Canvas, useFrame, useThree } from '@react-three/fiber'; import { EffectComposer, Bloom, ChromaticAberration, Glitch, Noise, Vignette, DepthOfField, MotionBlur } from '@react-three/postprocessing'; import { BlendFunction } from 'postprocessing'; import { OrbitControls } from '@react-three/drei'; import * as Tone from 'tone'; // ====== SHADERS ====== const GodRayShader = { uniforms: { tDiffuse: { value: null }, lightPosition: { value: new THREE.Vector2(0.5, 0.5) }, density: { value: 0.8 }, decay: { value: 0.9 }, weight: { value: 0.3 }, samples: { value: 60 } }, vertexShader: ` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `, fragmentShader: ` uniform sampler2D tDiffuse; uniform vec2 lightPosition; uniform float density; uniform float decay; uniform float weight; uniform int samples; varying vec2 vUv; void main() { vec2 texCoord = vUv; vec2 deltaTexCoord = (texCoord - lightPosition) * density / float(samples); vec2 illuminationDecay = vec2(1.0); vec4 color = texture2D(tDiffuse, texCoord); for(int i = 0; i < 60; i++) { if(i >= samples) break; texCoord -= deltaTexCoord; vec4 sample = texture2D(tDiffuse, texCoord); sample *= illuminationDecay * weight; color += sample; illuminationDecay *= decay; } gl_FragColor = color; } ` }; const AuroraShader = { uniforms: { time: { value: 0 }, color1: { value: new THREE.Color(0x00ff88) }, color2: { value: new THREE.Color(0x00aaff) }, color3: { value: new THREE.Color(0xff00aa) } }, vertexShader: ` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `, fragmentShader: ` uniform float time; uniform vec3 color1; uniform vec3 color2; uniform vec3 color3; varying vec2 vUv; void main() { float wave1 = sin(vUv.x * 10.0 + time * 2.0) * 0.5 + 0.5; float wave2 = sin(vUv.x * 15.0 - time * 1.5 + 2.0) * 0.5 + 0.5; float wave3 = cos(vUv.x * 8.0 + time * 3.0) * 0.5 + 0.5; vec3 color = mix(color1, color2, wave1); color = mix(color, color3, wave2 * 0.5); color *= wave3 * 0.8 + 0.2; float alpha = smoothstep(0.0, 0.3, vUv.y) * smoothstep(1.0, 0.7, vUv.y); alpha *= wave1 * 0.5 + wave2 * 0.3 + wave3 * 0.2; gl_FragColor = vec4(color, alpha * 0.6); } ` }; // ====== PARTICLE SYSTEM ====== class ParticleSystem { constructor(scene, count, color, size = 0.1) { this.scene = scene; this.count = count; const geometry = new THREE.BufferGeometry(); const positions = new Float32Array(count * 3); const colors = new Float32Array(count * 3); const sizes = new Float32Array(count); for (let i = 0; i < count; i++) { positions[i * 3] = (Math.random() - 0.5) * 50; positions[i * 3 + 1] = (Math.random() - 0.5) * 30; positions[i * 3 + 2] = (Math.random() - 0.5) * 50; const c = new THREE.Color(color); c.offsetHSL(Math.random() * 0.1, 0, Math.random() * 0.3); colors[i * 3] = c.r; colors[i * 3 + 1] = c.g; colors[i * 3 + 2] = c.b; sizes[i] = size * (0.5 + Math.random()); } geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3)); geometry.setAttribute('size', new THREE.BufferAttribute(sizes, 1)); const material = new THREE.ShaderMaterial({ uniforms: { time: { value: 0 }, pixelRatio: { value: window.devicePixelRatio } }, vertexShader: ` attribute float size; attribute vec3 color; varying vec3 vColor; uniform float time; uniform float pixelRatio; void main() { vColor = color; vec3 pos = position; pos.y += sin(time + position.x * 0.5) * 0.5; pos.x += cos(time * 0.8 + position.z * 0.3) * 0.3; vec4 mvPosition = modelViewMatrix * vec4(pos, 1.0); gl_PointSize = size * pixelRatio * (300.0 / -mvPosition.z); gl_Position = projectionMatrix * mvPosition; } `, fragmentShader: ` varying vec3 vColor; void main() { float dist = length(gl_PointCoord - vec2(0.5)); if (dist > 0.5) discard; float alpha = 1.0 - smoothstep(0.0, 0.5, dist); gl_FragColor = vec4(vColor, alpha); } `, transparent: true, blending: THREE.AdditiveBlending, depthWrite: false }); this.points = new THREE.Points(geometry, material); this.points.frustumCulled = false; scene.add(this.points); } update(time) { this.points.material.uniforms.time.value = time; } dispose() { this.scene.remove(this.points); this.points.geometry.dispose(); this.points.material.dispose(); } } // ====== RAIN SYSTEM ====== class RainSystem { constructor(scene, count = 5000) { this.scene = scene; this.count = count; const geometry = new THREE.BufferGeometry(); const positions = new Float32Array(count * 3); const velocities = new Float32Array(count); for (let i = 0; i < count; i++) { positions[i * 3] = (Math.random() - 0.5) * 100; positions[i * 3 + 1] = Math.random() * 40; positions[i * 3 + 2] = (Math.random() - 0.5) * 100; velocities[i] = 0.5 + Math.random() * 0.5; } geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); geometry.setAttribute('velocity', new THREE.BufferAttribute(velocities, 1)); const material = new THREE.PointsMaterial({ color: 0x88ccff, size: 0.05, transparent: true, opacity: 0.6, blending: THREE.AdditiveBlending, depthWrite: false }); this.points = new THREE.Points(geometry, material); this.points.frustumCulled = false; scene.add(this.points); } update(delta) { const positions = this.points.geometry.attributes.position.array; const velocities = this.points.geometry.attributes.velocity.array; for (let i = 0; i < this.count; i++) { positions[i * 3 + 1] -= velocities[i] * delta * 30; if (positions[i * 3 + 1] < -5) { positions[i * 3 + 1] = 35; positions[i * 3] = (Math.random() - 0.5) * 100; positions[i * 3 + 2] = (Math.random() - 0.5) * 100; } } this.points.geometry.attributes.position.needsUpdate = true; } dispose() { this.scene.remove(this.points); this.points.geometry.dispose(); this.points.material.dispose(); } } // ====== HOLOGRAM ====== function Hologram({ position, color, text }) { const mesh = useRef(); const canvas = useMemo(() => { const c = document.createElement('canvas'); c.width = 512; c.height = 256; const ctx = c.getContext('2d'); ctx.fillStyle = 'rgba(0,0,0,0)'; ctx.fillRect(0, 0, 512, 256); ctx.font = 'bold 48px Arial'; ctx.fillStyle = color; ctx.textAlign = 'center'; ctx.fillText(text, 256, 128); return c; }, [color, text]); const texture = useMemo(() => new THREE.CanvasTexture(canvas), [canvas]); useFrame(({ clock }) => { if (mesh.current) { mesh.current.material.opacity = 0.5 + Math.sin(clock.elapsedTime * 2) * 0.3; mesh.current.material.emissiveIntensity = 1 + Math.sin(clock.elapsedTime * 3) * 0.5; } }); return ( <mesh ref={mesh} position={position}> <planeGeometry args={[20, 10]} /> <meshStandardMaterial map={texture} transparent emissive={color} emissiveMap={texture} emissiveIntensity={1.5} side={THREE.DoubleSide} depthWrite={false} /> </mesh> ); } // ====== STAGE 1: NEON VEIL DISTRICT ====== function NeonVeilDistrict({ onComplete }) { const group = useRef(); const rain = useRef(); const particles = useRef(); const [holograms] = useState([ { pos: [-15, 8, -20], color: '#ff00ff', text: 'NEON VEIL' }, { pos: [15, 6, -30], color: '#00ffff', text: 'DISTRICT 7' }, { pos: [0, 10, -40], color: '#ff00aa', text: 'WELCOME' } ]); useEffect(() => { rain.current = new RainSystem(group.current, 8000); particles.current = new ParticleSystem(group.current, 3000, 0xff00ff, 0.15); const timer = setTimeout(onComplete, 20000); return () => { clearTimeout(timer); if (rain.current) rain.current.dispose(); if (particles.current) particles.current.dispose(); }; }, [onComplete]); useFrame(({ clock, camera }) => { const t = clock.elapsedTime; if (rain.current) rain.current.update(0.016); if (particles.current) particles.current.update(t); // Camera movement camera.position.x = Math.sin(t * 0.5) * 3; camera.position.y = 3 + Math.sin(t * 0.8) * 0.5; camera.lookAt(0, 2, -20); // Animate holograms group.current.children.forEach((child, i) => { if (child.isMesh) { child.rotation.y = Math.sin(t * 0.5 + i) * 0.2; } }); }); return ( <group ref={group}> {/* Ground with mirror reflection */} <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, 0, -20]}> <planeGeometry args={[100, 100]} /> <meshStandardMaterial color="#111122" metalness={0.9} roughness={0.1} envMapIntensity={2} /> </mesh> {/* Neon buildings */} {Array.from({ length: 20 }).map((_, i) => ( <mesh key={i} position={[ (Math.random() - 0.5) * 60, Math.random() * 10 + 2, -Math.random() * 40 - 5 ]} > <boxGeometry args={[2 + Math.random() * 3, 5 + Math.random() * 15, 2 + Math.random() * 3]} /> <meshStandardMaterial color="#0a0a2a" emissive={new THREE.Color().setHSL(Math.random(), 1, 0.5)} emissiveIntensity={0.5 + Math.random()} metalness={0.8} roughness={0.2} /> </mesh> ))} {/* Neon strips on ground */} {Array.from({ length: 10 }).map((_, i) => ( <mesh key={i} position={[(i - 5) * 8, 0.1, -20]} rotation={[-Math.PI / 2, 0, 0]}> <planeGeometry args={[1, 100]} /> <meshBasicMaterial color={new THREE.Color().setHSL(i / 10, 1, 0.5)} transparent opacity={0.8} /> </mesh> ))} {/* Holograms */} {holograms.map((h, i) => ( <Hologram key={i} position={h.pos} color={h.color} text={h.text} /> ))} {/* Light pillars */} {Array.from({ length: 8 }).map((_, i) => ( <mesh key={i} position={[(i - 4) * 10, 15, -30]}> <cylinderGeometry args={[0.5, 2, 30, 8, 1, true]} /> <meshBasicMaterial color={new THREE.Color().setHSL(i / 8, 1, 0.5)} transparent opacity={0.3} side={THREE.DoubleSide} blending={THREE.AdditiveBlending} /> </mesh> ))} {/* Point lights */} <pointLight position={[0, 10, 0]} color="#ff00ff" intensity={2} distance={30} /> <pointLight position={[-10, 5, -20]} color="#00ffff" intensity={2} distance={30} /> <pointLight position={[10, 5, -20]} color="#ff00aa" intensity={2} distance={30} /> </group> ); } // ====== STAGE 2: AETHER SPIRE ====== function AetherSpire({ onComplete }) { const group = useRef(); const particles = useRef(); useEffect(() => { particles.current = new ParticleSystem(group.current, 5000, 0x00ffff, 0.2); const timer = setTimeout(onComplete, 20000); return () => { clearTimeout(timer); if (particles.current) particles.current.dispose(); }; }, [onComplete]); useFrame(({ clock, camera }) => { const t = clock.elapsedTime; if (particles.current) particles.current.update(t); camera.position.x = Math.sin(t * 0.3) * 5; camera.position.y = 5 + Math.sin(t * 0.4) * 2; camera.lookAt(0, 0, -30); // Rotate floating structures group.current.children.forEach((child, i) => { if (child.isMesh && child.geometry.type === 'TorusGeometry') { child.rotation.x = t * 0.5 + i; child.rotation.y = t * 0.3 + i * 2; } }); }); return ( <group ref={group}> {/* Cloud floor */} <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, -2, -20]}> <planeGeometry args={[200, 200]} /> <meshStandardMaterial color="#ffffff" transparent opacity={0.3} emissive="#88ccff" emissiveIntensity={0.5} /> </mesh> {/* Floating mega structures */} {Array.from({ length: 12 }).map((_, i) => ( <group key={i} position={[ (Math.random() - 0.5) * 80, Math.random() * 20 + 5, -Math.random() * 60 - 10 ]}> <mesh> <torusGeometry args={[3 + Math.random() * 3, 0.5, 16, 32]} /> <meshStandardMaterial color="#0a0a3a" emissive={new THREE.Color().setHSL(Math.random(), 1, 0.7)} emissiveIntensity={1.5} metalness={0.9} roughness={0.1} /> </mesh> <mesh position={[0, 2, 0]}> <octahedronGeometry args={[1 + Math.random()]} /> <meshStandardMaterial color="#ffffff" emissive="#00ffff" emissiveIntensity={2} metalness={0.5} roughness={0.2} /> </mesh> </group> ))} {/* God ray sources */} {Array.from({ length: 6 }).map((_, i) => ( <mesh key={i} position={[(i - 3) * 15, 30, -30]}> <sphereGeometry args={[2, 16, 16]} /> <meshBasicMaterial color="#ffffff" /> </mesh> ))} {/* Light shafts */} {Array.from({ length: 6 }).map((_, i) => ( <mesh key={i} position={[(i - 3) * 15, 15, -30]}> <cylinderGeometry args={[0.1, 3, 30, 8, 1, true]} /> <meshBasicMaterial color="#ffffff" transparent opacity={0.2} side={THREE.DoubleSide} blending={THREE.AdditiveBlending} /> </mesh> ))} {/* Ambient lights */} <ambientLight intensity={0.5} color="#88ccff" /> <directionalLight position={[0, 20, 0]} intensity={2} color="#ffffff" /> <pointLight position={[0, 10, -20]} color="#00ffff" intensity={3} distance={50} /> </group> ); } // ====== STAGE 3: ECLIPSE NEXUS ====== function EclipseNexus({ onComplete }) { const group = useRef(); const particles = useRef(); const aurora = useRef(); useEffect(() => { particles.current = new ParticleSystem(group.current, 8000, 0xff00aa, 0.25); // Aurora shader const geometry = new THREE.PlaneGeometry(200, 50); const material = new THREE.ShaderMaterial({ uniforms: { time: { value: 0 }, color1: { value: new THREE.Color(0x00ff88) }, color2: { value: new THREE.Color(0x00aaff) }, color3: { value: new THREE.Color(0xff00aa) } }, vertexShader: AuroraShader.vertexShader, fragmentShader: AuroraShader.fragmentShader, transparent: true, side: THREE.DoubleSide, depthWrite: false }); aurora.current = new THREE.Mesh(geometry, material); aurora.current.position.set(0, 25, -50); aurora.current.rotation.x = Math.PI / 4; group.current.add(aurora.current); const timer = setTimeout(onComplete, 20000); return () => { clearTimeout(timer); if (particles.current) particles.current.dispose(); if (aurora.current) { group.current.remove(aurora.current); aurora.current.geometry.dispose(); aurora.current.material.dispose(); } }; }, [onComplete]); useFrame(({ clock, camera }) => { const t = clock.elapsedTime; if (particles.current) particles.current.update(t); if (aurora.current) { aurora.current.material.uniforms.time.value = t; aurora.current.rotation.z = Math.sin(t * 0.1) * 0.1; } camera.position.x = Math.sin(t * 0.8) * 8; camera.position.y = 3 + Math.sin(t * 1.2) * 2; camera.lookAt(0, 0, -30); // Glitch effect on structures group.current.children.forEach((child, i) => { if (child.isMesh && child.geometry.type === 'BoxGeometry') { if (Math.random() > 0.95) { child.position.x += (Math.random() - 0.5) * 2; child.position.y += (Math.random() - 0.5) * 2; } } }); }); return ( <group ref={group}> {/* Data stream floor */} <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, 0, -20]}> <planeGeometry args={[100, 100]} /> <meshStandardMaterial color="#0a0a2a" emissive="#ff00aa" emissiveIntensity={0.3} metalness={0.8} roughness={0.2} /> </mesh> {/* Glitchy structures */} {Array.from({ length: 15 }).map((_, i) => ( <mesh key={i} position={[ (Math.random() - 0.5) * 60, Math.random() * 15 + 2, -Math.random() * 50 - 5 ]} > <boxGeometry args={[2 + Math.random() * 4, 3 + Math.random() * 12, 2 + Math.random() * 4]} /> <meshStandardMaterial color="#0a0a3a" emissive={new THREE.Color().setHSL(Math.random(), 1, 0.5)} emissiveIntensity={1 + Math.random() * 2} metalness={0.7} roughness={0.3} /> </mesh> ))} {/* Data streams */} {Array.from({ length: 20 }).map((_, i) => ( <mesh key={i} position={[(i - 10) * 3, Math.random() * 20, -30]}> <boxGeometry args={[0.1, 20, 0.1]} /> <meshBasicMaterial color={new THREE.Color().setHSL(Math.random(), 1, 0.5)} transparent opacity={0.5} blending={THREE.AdditiveBlending} /> </mesh> ))} {/* Spectrum rings */} {Array.from({ length: 5 }).map((_, i) => ( <mesh key={i} position={[0, 5 + i * 3, -30]} rotation={[Math.PI / 2, 0, 0]}> <torusGeometry args={[10 + i * 3, 0.1, 8, 64]} /> <meshBasicMaterial color={new THREE.Color().setHSL(i / 5, 1, 0.5)} transparent opacity={0.8} blending={THREE.AdditiveBlending} /> </mesh> ))} {/* Lights */} <ambientLight intensity={0.3} color="#ff00aa" /> <pointLight position={[0, 10, 0]} color="#ff00aa" intensity={3} distance={40} /> <pointLight position={[-15, 5, -20]} color="#00ff88" intensity={2} distance={30} /> <pointLight position={[15, 5, -20]} color="#00aaff" intensity={2} distance={30} /> </group> ); } // ====== POST-PROCESSING ====== function PostProcessing({ stage }) { const { scene, camera } = useThree(); return ( <EffectComposer> <Bloom intensity={2.5} luminanceThreshold={0.1} luminanceSmoothing={0.9} mipmapBlur radius={0.8} /> <Bloom intensity={1.5} luminanceThreshold={0.5} luminanceSmoothing={0.5} mipmapBlur radius={0.5} /> <ChromaticAberration offset={[0.002, 0.002]} radialModulation modulationOffset={0.5} /> <Glitch delay={[1.5, 3.5]} duration={[0.1, 0.3]} strength={[0.3, 1]} mode={GlitchMode.SPORADIC} /> <Noise opacity={0.02} /> <Vignette eskil={false} offset={0.1} darkness={0.9} /> <DepthOfField focusDistance={0.01} focalLength={0.02} bokehScale={2} height={480} /> <MotionBlur strength={0.5} opacity={0.5} blendFunction={BlendFunction.NORMAL} /> </EffectComposer> ); } // ====== UI OVERLAY ====== function UIOverlay({ score, combo, stage, speed }) { return ( <div className="ui-overlay"> <div className="ui-header"> <div className="ui-title">NEON VEIL : INFINITY OVERDRIVE</div> <div className="ui-stage">STAGE {stage + 1}</div> </div> <div className="ui-score"> <div className="score-value">{Math.floor(score).toLocaleString()}</div> <div className="score-label">SCORE</div> </div> <div className="ui-combo"> <div className="combo-value">x{combo}</div> <div className="combo-label">COMBO</div> </div> <div className="ui-speed"> <div className="speed-bar"> <div className="speed-fill" style={{ width: `${speed}%` }} /> </div> <div className="speed-label">SPEED</div> </div> <div className="ui-controls"> <div className="control-hint">SWIPE TO MOVE</div> </div> </div> ); } // ====== MAIN GAME ====== function Game() { const [stage, setStage] = useState(0); const [score, setScore] = useState(0); const [combo, setCombo] = useState(1); const [speed, setSpeed] = useState(50); const [transitioning, setTransitioning] = useState(false); const handleStageComplete = useCallback(() => { setTransitioning(true); setTimeout(() => { setStage((prev) => (prev + 1) % 3); setTransitioning(false); }, 1000); }, []); useEffect(() => { const interval = setInterval(() => { setScore((prev) => prev + 10 * combo); setCombo((prev) => Math.min(prev + 0.1, 10)); setSpeed((prev) => Math.min(prev + 0.5, 100)); }, 100); return () => clearInterval(interval); }, [combo]); return ( <div className="game-container"> <Canvas camera={{ position: [0, 3, 10], fov: 75 }} gl={{ antialias: true, powerPreference: 'high-performance' }} > {stage === 0 && <NeonVeilDistrict onComplete={handleStageComplete} />} {stage === 1 && <AetherSpire onComplete={handleStageComplete} />} {stage === 2 && <EclipseNexus onComplete={handleStageComplete} />} <PostProcessing stage={stage} /> </Canvas> <UIOverlay score={score} combo={combo} stage={stage} speed={speed} /> {transitioning && ( <div className="transition-overlay"> <div className="transition-text">STAGE {stage + 1} COMPLETE</div> </div> )} <style jsx>{` .game-container { width: 100vw; height: 100vh; position: relative; overflow: hidden; background: #000; font-family: 'Orbitron', monospace; } .ui-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 10; } .ui-header { position: absolute; top: 20px; left: 50%; transform: translateX(-50%); text-align: center; color: #fff; text-shadow: 0 0 20px #ff00ff, 0 0 40px #00ffff; animation: pulse 2s infinite; } .ui-title { font-size: 24px; font-weight: bold; letter-spacing: 4px; } .ui-stage { font-size: 14px; letter-spacing: 2px; margin-top: 5px; color: #ff00aa; } .ui-score { position: absolute; top: 100px; right: 40px; text-align: right; color: #fff; text-shadow: 0 0 10px #00ffff; } .score-value { font-size: 48px; font-weight: bold; } .score-label { font-size: 12px; letter-spacing: 2px; color: #00ffff; } .ui-combo { position: absolute; top: 100px; left: 40px; color: #fff; text-shadow: 0 0 10px #ff00ff; } .combo-value { font-size: 36px; font-weight: bold; color: #ff00ff; } .combo-label { font-size: 12px; letter-spacing: 2px; } .ui-speed { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%); width: 300px; color: #fff; } .speed-bar { height: 4px; background: rgba(255, 255, 255, 0.2); border-radius: 2px; overflow: hidden; } .speed-fill { height: 100%; background: linear-gradient(90deg, #00ffff, #ff00ff); transition: width 0.1s; box-shadow: 0 0 10px #00ffff; } .speed-label { text-align: center; font-size: 12px; letter-spacing: 2px; margin-top: 5px; color: #00ffff; } .ui-controls { position: absolute; bottom: 80px; left: 50%; transform: translateX(-50%); color: rgba(255, 255, 255, 0.5); font-size: 12px; letter-spacing: 2px; animation: fadeInOut 3s infinite; } .transition-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.9); display: flex; align-items: center; justify-content: center; z-index: 20; animation: flash 1s ease-out; } .transition-text { font-size: 48px; font-weight: bold; color: #000; text-shadow: 0 0 20px #ff00ff; animation: scaleIn 0.5s ease-out; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } @keyframes fadeInOut { 0%, 100% { opacity: 0.3; } 50% { opacity: 1; } } @keyframes flash { 0% { opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; } } @keyframes scaleIn { 0% { transform: scale(0.5); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } `}</style> </div> ); } export default function App() { return <Game />; }

ログインして完全なプロンプトを表示

次で続行:

ログインすると、次に同意したことになります: 利用規約 と プライバシーポリシー

使い方

このプロンプトは creative 向けに設計されています。上の内容をコピーして、お好みの AI ツールに貼り付けてください。

最良の結果を得るには、プレースホルダー(角括弧や大文字で示された部分)を具体的な要件に置き換えてください。

参考資料

カテゴリ:creative| twitter| three-js| react

ノート