---
# System prepended metadata

title: Part 1
tags: [VR coordinate]

---

# Part 1
###### tags: `VR coordinate`

## Unity的座標關係:
Unity中的整體物件主要是在WorldPosition(世界座標)做事。

每個物件都包含Transform:
> Transform負責管理Position、Rotation及Scale。

每個物件的Position:
> 世界座標，為絕對座標

每個物件的LocalPosition:
> 若有子物件，子物件的LocalPosition是相對於父物件的Transform.Position。(即==相對座標==)
> 若物件沒有上層父物件時，他的LocalPosition = Position = WorldPosition。


## 目標:mesh生成於正確的座標位置 + 解決mesh跟著手把移動的問題
取用SteamVR中的Player角色物件，手把為Player子物件。
物件關係為: Player → SteamVRObject → 手把

### <方法1>
**Step1:** 
將程式放在右手手把物件上
**Step2:** 
抓取右手手把位置(Position)，此時的右手手把Position為localPosition，相對於SteamVRObject的座標，SteamVRObject的Position(0,0,0)，則我們能直接忽略不計，將右手手把的Position想成相對於Player的座標(Player為主物件，他的座標為世界座標)。
**Step3:** 
將右手手把座標從局部座標(LocalPosition)轉為世界座標。取得Player與手把座標的座標向量差(其實就等於手把座標的LocalPosition值)，記做變數m。在取得player座標，將 m + Player的Position，就能得到手把的世界座標。

**成果圖(一):**
![](https://ppt.cc/fMeL8x@.png)


**可用的內建函式:**

```C#
inverse.TransformPoin //世界空間到局部空間。 
Transform.TransformPoint //局部座標轉世界座標
```