报名参加即将到来的黑客马拉松大赛!奖金为总额超过 25 万美元的 MANA 和 LAND 。
X
你好,请选择
语言:
关闭

取得用户数据

跟踪用户位置和旋转

Camera 对象能取得有关用户在场景中的视点的信息。

  • camera.position 返回一个3D矢量,用户相对于场景的坐标。
  • camera.rotation 返回用户旋转的四元数。

提示:您还可以使用 camera.rotation.eulerAngles 获取用欧拉角度(xyz 向量)表示的用户旋转。

const camera = Camera.instance

class CameraTrackSystem {
  update() {
    log(camera.position)
    log(camera.rotation.eulerAngles)
  }
}

上面的示例记录了用户在每个帧上的位置和旋转。

const camera = Camera.instance

class SomeSystem implements ISystem {
  constructor() {
    super(Transform)
  }

  update() {
    for (let i in this.entities) {
      const entity = this.entities[i]
      const transform = entity.getComponent(Transform)
      transform.rotation.copy(camera.rotation)
    }
  }
}

const cube = new Entity()
const shape = new BoxShape()
const transform = new Transform()
transform.position.set(5, 1, 5)
cube.addComponent(shape)
cube.addComponent(transform)

engine.addEntity(cube)
engine.addSystem(new SomeSystem())

上面的示例使用用户的旋转来设置场景中立方体的旋转。

获取用户的以太坊公钥

您可以使用 getUserPublicKey() 获取用户的以太坊公钥。然后,您可以使用这些信息向用户付款,或者作为识别用户的一种方式。

下面的示例导入 Identity 库并运行 getUserPublicKey() 来获取用户以太坊公钥,并将其在控制台显示。当然用户必须登录到浏览器上的 Metamask 帐户。

import { getUserPublicKey } from "@decentraland/Identity"

const publicKeyRequest = executeTask(async () => {
  const publicKey = await getUserPublicKey()
  log(publicKey)
  return publicKey
})

class IDSystem implements ISystem {
  update() {
    if (publicKeyRequest.didFail) {
      log("error fetching id" + publicKeyRequest.error)
    } else {
      log("id:" + publicKeyRequest.result)
    }
  }
}

请注意,我们使用异步函数来运行 getUserPublicKey() 函数,因为它可能需要一些时间来获此数据。 然后在 system 中使用这个数据。

获取所有用户数据

可以使用 getUserData() 获取用户显示名称和以太坊公钥。

下面的示例导入 Identity 库并运行 getUserData()

import { getUserData } from "@decentraland/Identity"

const userData = executeTask(async () => {
  const data = await getUserData()
  log(data.displayName)
  return data.displayName
})

请注意,使用异步函数来运行 getUserData() 函数,因为它可能需要一些时间来获此数据。