---
title: FPS/TPSビューの例
slug: world-sdk-guide-ja/fpstps
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

これらはFPS/TPS制御を設定する例です。




::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-SfBjO22g-SoCWm4vqWy1X-20240904-102409.gif" size="92" width="600" height="290" position="center" showCaption="false"}

# ステップ 1 : カメラの位置を固定する

TPSでカメラを固定するには、ZepetoPlayers > ZepetoCamera > Zoomに移動し、最小値と最大値を同じに設定します。

Look Offset Yの値を0.1に設定します。




::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-WJL-wyerhl3P0GcdOfGIU-20240904-102409.png" size="78" width="682" height="436" position="center" showCaption="false"}

FPSでカメラを固定するには、ZepetoPlayers > ZepetoCamera > Zoomに移動し、最小値と最大値を-1に設定します。

Look Offset Yの値を0.1に設定します。




![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-wW6Zv1CkMMomrChpB6V6l-20240904-102409.png)

# ステップ2 : スクリプト作成

カメラの回転をキャラクターの回転に適用するスクリプトを追加します。

カメラの回転入力（OnDragEvent）を受け取ってキャラクターの回転を修正するスクリプトを追加します。

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoPlayers, ZepetoCharacter, ZepetoScreenTouchpad, ZepetoCamera } from 'ZEPETO.Character.Controller';
import { Vector3, Time, Quaternion} from 'UnityEngine';
import { ZepetoInputControl } from 'RootNamespace';

export default class TPSController extends ZepetoScriptBehaviour {

    private zepetoScreenPad: ZepetoScreenTouchpad;
    private myCharacter: ZepetoCharacter;
    private myInputControl: ZepetoInputControl;
    private myCamera: ZepetoCamera;

    Awake() {
        this.myInputControl = new ZepetoInputControl();
    }

    Start() {
        this.myInputControl.Enable();
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this.myCamera = ZepetoPlayers.instance.LocalPlayer.zepetoCamera;
            this.myCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
            this.zepetoScreenPad = ZepetoPlayers.instance.gameObject.GetComponentInChildren<ZepetoScreenTouchpad>();
            this.zepetoScreenPad.OnDragEvent.AddListener(deltaVector => {
                console.log(`[OnDragEvent] : ${deltaVector.ToString()}`);
                // カメラの回転はキャラクターの回転に応じて修正されます。
                ZepetoPlayers.instance.ZepetoCamera.transform.RotateAround(this.myCharacter.transform.position,
                    Vector3.up, deltaVector.x * Time.deltaTime * 80);
            });
        });
    }

    Update() {
        if ((null == this.myCharacter) || (null == this.myCamera)) {
            return;
        }
        const lookAxisRot = Quaternion.LookRotation(this.myCamera.cameraParent.forward);
        const projRot = Vector3.ProjectOnPlane(lookAxisRot.eulerAngles, Vector3.right);
        // キャラクターの回転をカメラの前方方向に合わせます。
        this.myCharacter.gameObject.transform.rotation = Quaternion.Euler(projRot);
    }
}
```

