Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
1. Mostrar la propiedad txt de la primera escena.
2. Crear el método getSceneByName y hacer que devuelva el índice correspondiente a escena cuyo nombre que hemos pasado como parámetro. Utilizaremos este método para inicializar el estado currentScene :
const [currentScene, setCurrentScene] = useState(getSceneByName(ꞋespacioꞋ));
3. Cargaremos ahora la imagen de la primera escena. Esta imagen deberá ocupar toda la pantalla.
export const Scene = styled.div`
width: 100vw;
height:100vh;
background-image:url(${({ back }) => back});
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: center center;
background-color: black;
position: relative;
margin:auto;
`;
4. Para mantener las proporciones de la imagen de fondo, usaremos este código:
const calculateSceneDimensions = () => {
const w = window.innerWidth;
const h = window.innerHeight;
const a = 16;
const b = 9;
const proportion = a / b;
const proportion2 = w / h;
if (proportion > proportion2) {
setWidth(w);
setHeight(w * b / a);
} else {
setHeight(h);
setWidth(h * a / b);
}
}
5. Pondremos en pantalla unas areas interactivas, para que cuando el usuario las pulse, sea llevado a otra escena:
export const Door = style.div`
position: absolute;
left: ${({ data }) => data.x}%;
top: ${({ data }) => data.y}%;
width: ${({ data }) => data.width}%;
height: ${({ data }) => data.height}%;
border: 1px solid red;
cursor: pointer;
`;
{
currentScene.doors.map((door, i) => <Door key={i} onClick={() => {
setCurrentScene(getSceneByName(door.target))
}} data={door} />)
}