> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/interatividade/avatares/move-player.md).

# Mover o Player

Teleportar o jogador, ou fazê-lo andar até uma nova posição dentro da sua scene

Para alterar a posição do jogador na cena, use o `movePlayerTo()` função. Use-a para fazer reaparecer jogadores, definir checkpoints ou fazer um jogador caminhar até um ponto como parte de uma cena cinemática.

{% hint style="info" %}
**💡 Dica**: A maneira mais fácil de mover o jogador é usar o [Scene Editor no Creator Hub](/creator/content-creator-pt/scene-editor/primeiros-passos/about-editor.md). Use o no-code **Mover jogador** ou o **Mover jogador para aqui** Actions, consulte [Tornar qualquer item smart](/creator/content-creator-pt/scene-editor/interatividade/make-any-item-smart.md).
{% endhint %}

Esta função recebe um objeto com as seguintes propriedades:

* `newRelativePosition`: Onde posicionar o jogador, expresso como um Vector3.
* `cameraTarget`: (opcional) A direção para a qual fazer a câmera olhar, expressa como um Vector3 que representa as coordenadas de um ponto no espaço a observar. Se nenhum valor for fornecido, a câmera manterá a mesma rotação de antes do movimento.
* `avatarTarget`: (opcional) A direção para a qual fazer o avatar olhar, expressa como um Vector3 que representa as coordenadas de um ponto no espaço a observar. Se nenhum valor for fornecido, o avatar manterá a mesma rotação de antes do movimento. Se o jogador estiver no modo de câmera em 1ª pessoa, a rotação da câmera e do avatar é a mesma.
* `duration`: (opcional) Quanto tempo a transição deve levar, em segundos. Se nenhum valor for fornecido, a transição ocorrerá instantaneamente. Se uma duração for fornecida, o avatar caminhará ou correrá até essa nova posição.

{% hint style="warning" %}
**📔 Nota**: Durante a transição, o avatar não é afetado por colliders, então pode atravessar objetos.
{% endhint %}

```ts
import { movePlayerTo } from '~system/RestrictedActions'

// criar Entity
const myEntity = engine.addEntity()
MeshRenderer.setBox(myEntity)
MeshCollider.setBox(myEntity)

Transform.create(myEntity, {
	position: { x: 4, y: 1, z: 4 },
})

// dar comportamento à Entity
pointerEventsSystem.onPointerDown(
	{
		entity: myEntity,
		opts: { button: InputAction.IA_POINTER, hoverText: 'Clique' },
	},
	function () {
		// reaparecer jogador
		movePlayerTo({
			newRelativePosition: Vector3.create(1, 0, 1),
			cameraTarget: Vector3.create(8, 1, 8),
			avatarTarget: Vector3.create(8, 1, 8),
		})
	}
)
```

O movimento do jogador ocorre instantaneamente, sem telas de confirmação ou transições de câmera.

{% hint style="warning" %}
**📔 Nota**: Os jogadores só podem ser movidos se já estiverem dentro dos limites da cena, e só podem ser movidos para locais que estejam dentro dos limites da cena. Você não pode usar `movePlayerTo()` para transportar um jogador para outra cena. Para mover um jogador para outra cena, consulte [Teletransportes](/creator/content-creator-pt/scenes-sdk7/interatividade/external-links.md#teleports).
{% endhint %}

A `movePlayerTo()` função pode ser aguardada, então se o movimento tiver uma duração, você pode usar `await` para esperar que o jogador alcance o seu destino.

```ts
import { movePlayerTo } from '~system/RestrictedActions'

pointerEventsSystem.onPointerDown(
	{
		entity: myEntity,
		opts: { button: InputAction.IA_POINTER, hoverText: 'Clique' },
	},
	async function () {
		await movePlayerTo({
			newRelativePosition: Vector3.create(1, 0, 1),
			cameraTarget: Vector3.create(8, 1, 8),
			avatarTarget: Vector3.create(8, 1, 8),
			duration: 2,
		})
	}
)
```

Se o jogador tentar se mover durante a duração da transição, a transição será interrompida e o `movePlayerTo` função nunca será resolvida. Você pode evitar esse comportamento desativando todas as entradas enquanto a transição estiver em andamento usando o `InputModifier` componente, consulte [Restringir locomoção](/creator/content-creator-pt/scenes-sdk7/interatividade/avatares/locomotion.md#restrict-locomotion).

```ts
import { movePlayerTo } from '~system/RestrictedActions'
import {InputModifier, engine} from '@dcl/sdk/ecs'

pointerEventsSystem.onPointerDown(
	{
		entity: myEntity,
		opts: { button: InputAction.IA_POINTER, hoverText: 'Clique' },
	},
	async function () {

		// desativar todas as entradas
		InputModifier.create(engine.PlayerEntity, {
			mode: InputModifier.Mode.Standard({
				disableAll: true,
			}),
		})

		// mover jogador
		await movePlayerTo({
			newRelativePosition: Vector3.create(1, 0, 1),
			cameraTarget: Vector3.create(8, 1, 8),
			avatarTarget: Vector3.create(8, 1, 8),
			duration: 2,
		})

		// ativar todas as entradas
		InputModifier.deleteFrom(engine.PlayerEntity)
	}
)
```

{% hint style="warning" %}
**📔 Nota**: Além disso, o resultado do await pode ser armazenado para avaliar sua `success` propriedade e saber se o movimento foi interrompido (por exemplo, por movimento de entrada) ou concluído com sucesso.
{% endhint %}

{% hint style="info" %}
**💡 Dica**: Para mover um jogador para uma cena diferente, ou para coordenadas diferentes no mapa de Genesis City, consulte [Teletransportes](/creator/content-creator-pt/scenes-sdk7/interatividade/external-links.md#teleports).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/interatividade/avatares/move-player.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
