hytopia
Version:
The HYTOPIA SDK makes it easy for developers to create massively multiplayer games using JavaScript or TypeScript.
44 lines (37 loc) • 1.21 kB
text/typescript
import {
startServer,
Entity,
PlayerEntity,
PlayerEvent,
Quaternion,
} from 'hytopia';
import worldMap from './assets/map.json';
startServer(world => {
world.loadMap(worldMap);
// Spawn a player entity when a player joins the game.
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
const playerEntity = new PlayerEntity({
player,
name: 'Player',
modelUri: 'models/players/player.gltf',
modelLoopedAnimations: [ 'idle' ],
modelScale: 0.5,
});
playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
// Spawn a sword entity as a child of the player entity.
const swordChildEntity = new Entity({
name: 'sword',
modelUri: 'models/items/sword.gltf',
parent: playerEntity,
parentNodeName: 'hand_right_anchor',
});
swordChildEntity.spawn(
world,
{ x: 0, y: 0.3, z: 0.5 }, // spawn with a position relative to the parent node
Quaternion.fromEuler(-90, 0, 90), // spawn with a rotation so it looks correct in the hand
);
});
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
});
});