diff --git a/src/pages/Home/Canvas.tsx b/src/pages/Home/Canvas.tsx index bb34c95..59eb3e5 100644 --- a/src/pages/Home/Canvas.tsx +++ b/src/pages/Home/Canvas.tsx @@ -7,6 +7,7 @@ interface Props { export default function ThreeCanvas(props: Props) { return ( + {props.children} ); diff --git a/src/pages/Home/Scene.tsx b/src/pages/Home/Scene.tsx index 96877bd..4916ae5 100644 --- a/src/pages/Home/Scene.tsx +++ b/src/pages/Home/Scene.tsx @@ -1,14 +1,29 @@ -interface Props { - color: string; -} +import { useFrame, useLoader } from "@react-three/fiber"; +import { useRef } from "react"; +import * as THREE from "three"; +import { earth, jupiter, mars, sun, venus } from "@/data/planets"; +import type { Planet } from "@/types/planet"; + +const planets = [earth, jupiter, mars, sun, venus]; + +export default function HomeScene() { + const planet: Planet = planets[Math.floor(Math.random() * planets.length)]; + const texture = useLoader(THREE.TextureLoader, planet.texturePath); + const planetRef = useRef(null); + + useFrame((_, delta) => { + if (planetRef.current) { + planetRef.current.rotation.y += delta * 0.2; + } + }); -export default function Scene(props: Props) { return ( <> - - - - + + + + + ); diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index c590a8a..22a68e1 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -1,18 +1,60 @@ -import { Leva, useControls } from "leva"; +import { Stars } from "@react-three/drei"; +import { useNavigate } from "react-router-dom"; import ThreeCanvas from "@/pages/Home/Canvas"; -import Scene from "@/pages/Home/Scene"; +import HomeScene from "@/pages/Home/Scene"; export default function Page() { - const { color } = useControls({ - color: { value: "orange" }, // 初期値 - }); + const navigate = useNavigate(); return ( - <> - +
- + + - + +
+

+ SPACE SIMULATOR +

+ +
+
); }