このページは過去の情報となります。
新しいスクリプトリファレンスはこちらになります。
プレイヤー情報を取得、物理演算の制御を行うクラスです。
ExportRoomPlayer | |
---|---|
名前 | 説明 |
IsAvailable | プレイヤーがルームに存在するか |
GetId | プレイヤーのIDを取得 |
GetName | プレイヤーの名前を取得 |
GetUserType | プレイヤーのアカウント種別を取得 |
GetIsLocal | ローカルのプレイヤーがどうかを取得 |
GetPosition | プレイヤーの足元に相当する位置を取得 |
GetRotation | プレイヤーの頭のY軸回転に相当する回転を取得 |
GetForward | プレイヤーの前方を指す正規化ベクトルを取得 |
GetUp | プレイヤーの上方を指す正規化ベクトルを取得 |
GetRight | プレイヤーの右方を指す正規化ベクトルを取得 |
GetRoomPlayerController | プレイヤーに対する操作を提供するオブジェクトを取得 |
Character | プレイヤーが使用しているキャラクター(アバター)の情報を取得 |
ExportRoomPlayerController | |
名前 | 説明 |
IsGrounded | プレイヤーRigidbodyが接地しているか |
GetVelocity | プレイヤーRigidbodyの速度 |
GetMass | プレイヤーRigidbodyの質量 |
SetVelocity | プレイヤーRigidbodyの速度を設定する |
TeleportTo | プレイヤーRigidbodyのワールド位置、ワールド角度を指定して移動する |
AddForce | プレイヤーRigidbodyに力を与える |
ExportRoomPlayer.IsAvailable fun(): bool
プレイヤーがルームに存在するか。
存在しない場合は false を返す。
ExportRoomPlayer.GetId fun(): string
プレイヤーのIDを取得する。
フォーマットは最大16文字の16進数文字列 (e.g. “4b32da78cc0a9213”
)
local player = vci.vc.room.GetLocalPlayer() -- プレイヤー情報の取得 print("ID: "..player.GetId())
ExportRoomPlayer.GetName fun(): string
プレイヤーの名前を取得する。
local player = vci.vc.room.GetLocalPlayer() -- プレイヤー情報の取得 print("Name: "..player.GetName())
ExportRoomPlayer.GetUserType fun(): string
プレイヤーのアカウント種別を取得する。
TSO | アカウントを連携しているプレイヤー |
---|---|
Anonymous | アカウント連携をしていないプレイヤー |
local player = vci.vc.room.GetLocalPlayer() -- プレイヤー情報の取得 print("UserType: "..player.GetUserType()) -- "TSO" or "Anonymous"
ExportRoomPlayer.GetIsLocal fun(): boolean
ローカルのプレイヤーがどうかを取得する。
ExportRoomPlayer.GetPosition fun(): Vector3
プレイヤーの足元に相当する位置を取得する。
※リモートプレイヤーかつ Character.IsAvailable()
が false の場合は nil が返されます。
※実装の都合上、数フレーム前の時点の値が返ります。
local player = vci.vc.room.GetLocalPlayer() -- プレイヤー情報の取得 print("Position: "..tostring(player.GetPosition()))
ExportRoomPlayer.GetRotation fun(): Quaternion
プレイヤーの頭のY軸回転に相当する回転を取得する。
※リモートプレイヤーかつ Character.IsAvailable()
が false の場合は nil が返されます。
※実装の都合上、数フレーム前の時点の値が返ります。
local player = vci.vc.room.GetLocalPlayer() -- プレイヤー情報の取得 print("Rotation: "..tostring(player.GetRotation()))
ExportRoomPlayer.GetForward fun(): Vector3
プレイヤーの前方を指す正規化ベクトルを取得する。
※リモートプレイヤーかつ Character.IsAvailable()
が false の場合は nil が返されます。
※実装の都合上、数フレーム前の時点の値が返ります。
※ページ下のサンプルを参照のこと。
ExportRoomPlayer.GetUp fun(): Vector3
プレイヤーの上方を指す正規化ベクトルを取得する。
※リモートプレイヤーかつ Character.IsAvailable()
が false の場合は nil が返されます。
※実装の都合上、数フレーム前の時点の値が返ります。
※ページ下のサンプルを参照のこと。
ExportRoomPlayer.GetRight fun(): Vector3
プレイヤーの右方を指す正規化ベクトルを取得する。
※リモートプレイヤーかつ Character.IsAvailable()
が false の場合は nil が返されます。
※実装の都合上、数フレーム前の時点の値が返ります。
※ページ下のサンプルを参照のこと。
ExportRoomPlayer.GetRoomPlayerController fun(): ExportRoomPlayerController
プレイヤーに対する操作を提供するオブジェクトを取得する。
※ローカルプレイヤーに対してのみ取得可能。
※ローカルプレイヤーでない場合は nil を返します。
-- 物理演算制御クラスの取得 local playerController = player.GetRoomPlayerController() -- ローカルプレイヤー以外では nil が返る
ExportRoomPlayer.Character ExportCharacter
プレイヤーが使用しているキャラクター(アバター)の情報を取得する。
-- キャラクターモデル情報の取得 local character = player.Character
ExportRoomPlayerController.IsGrounded fun(): boolean
プレイヤーRigidbodyが接地しているか。
※実装の都合上、数フレーム前の時点の値が返ります。
local playerController = localPlayer.GetRoomPlayerController() -- ローカルプレイヤー以外では nil が返る -- 物理演算情報の取得 print("IsGrounded: "..tostring(playerController.IsGrounded()))
ExportRoomPlayerController.GetVelocity fun(): Vector3
プレイヤーRigidbodyの速度 [m/s] を取得する。
※実装の都合上、数フレーム前の時点の値が返ります。
local playerController = localPlayer.GetRoomPlayerController() -- ローカルプレイヤー以外では nil が返る -- 物理演算情報の取得 print("Velocity: "..tostring(playerController.GetVelocity()))
ExportRoomPlayerController.GetMass fun(): float
プレイヤーRigidbodyの質量[kg]を取得する。
※実装の都合上、数フレーム前の時点の値が返ります。
local playerController = localPlayer.GetRoomPlayerController() -- ローカルプレイヤー以外では nil が返る -- 物理演算情報の取得 print("Mass: "..playerController.GetMass())
ExportRoomPlayerController.SetVelocity fun(velocity: Vector3)
プレイヤーRigidbodyの速度 [m/s] を設定する。
※ページ下のサンプルを参照のこと。
ExportRoomPlayerController.TeleportTo fun(position: Vector3, rotation: Quaternion)
プレイヤーRigidbodyのワールド位置、ワールド角度を指定して移動する。
rotationはY軸回転成分のみ反映される。
※ページ下のサンプルを参照のこと。
ExportRoomPlayerController.AddForce fun(force: Vector3, forceMode: ExportForce)
プレイヤーRigidbodyに力を与える。
forceMode: vci.forceMode.Force | force[N] の力を継続的に与える |
---|---|
forceMode: vci.forceMode.Impulse | force[Ns] の力積を瞬発的に与える |
local localPlayer = vci.vc.room.GetLocalPlayer() local playerController = localPlayer.GetRoomPlayerController() -- ローカルプレイヤー以外では nil が返る -- 物理演算情報の取得 print("IsGrounded: "..tostring(playerController.IsGrounded())) print("Velocity: "..tostring(playerController.GetVelocity())) print("Mass: "..playerController.GetMass()) -- キー入力に応じてプレイヤーを動かす local function moveHorizontallyByKeyboard(axis) if axis==Vector3.zero then return end -- 移動量 local speed = 10 --[m/s?] local deltaAngle = 10 --[degree] -- axis.xz で水平方向に初速度を与えて動かす local direction = localPlayer.GetRight() * axis.x direction = direction + localPlayer.GetForward() * axis.z if direction ~= Vector3.zero then playerController.SetVelocity(direction * speed) end -- axis.y で回転を与えて現在の座標と同位置にテレポート if axis.y ~= 0 then local position = localPlayer.GetPosition() local rotation = localPlayer.GetRotation() rotation = Quaternion.Euler(0, deltaAngle * axis.y, 0) * rotation playerController.TeleportTo(position, rotation) end print(tostring(localPlayer.GetPosition()) .. "," ..tostring(localPlayer.GetRotation())) end -- 鉛直上方向に力を与える local function addJumpForceToPlayerByKeyboard(button) if not button then return end local impulse = 10 --[Ns] local mass = playerController.GetMass() local force = impulse * mass print("[AddForce] IsGrounded: "..tostring(playerController.IsGrounded())) playerController.AddForce(Vector3.up * force, vci.forceMode.Impulse) end -- 鉛直上方向の初速度を与える local function addJumpVelocityToPlayerByKeyboard(button) if not button then return end local speed = 10 -- [m/s] print("[SetVelocity] IsGrounded: "..tostring(playerController.IsGrounded())) playerController.SetVelocity(Vector3.up * speed) end -- 原点に移動 local function teleportToOriginByKeyboard(button) if not button then return end playerController.TeleportTo(Vector3.zero, Quaternion.identity) print("reset position") end vci.StartCoroutine( coroutine.create( function() while true do -- GetAxisInput() -- →: x = +1, ←: x = -1 -- U: y = +1, I: y = -1 -- ↑: z = +1, ↓: z = -1 -- Acts like Unity GetKey -- GetButtonInput() -- Only 1, 2, 3, 4 key -- Acts like Unity GetKeyDown moveHorizontallyByKeyboard(vci.me.GetAxisInput()) addJumpForceToPlayerByKeyboard(vci.me.GetButtonInput(1)) addJumpVelocityToPlayerByKeyboard(vci.me.GetButtonInput(2)) teleportToOriginByKeyboard(vci.me.GetButtonInput(3)) coroutine.yield() end end ))