カメラを作成する
![89f2d71b c24c 4bb4 9bee 4bb331978440](https://codegenius.org/uploads/slide/image/2572/89f2d71b-c24c-4bb4-9bee-4bb331978440.jpeg)
![04aeff8a af44 494f 8bc0 adb26d9f7eca](https://codegenius.org/uploads/slide/image/2573/04aeff8a-af44-494f-8bc0-adb26d9f7eca.jpeg)
![Ea8596ce 04c6 45c1 b5f0 7ac14ca4adb0](https://codegenius.org/uploads/slide/image/2574/ea8596ce-04c6-45c1-b5f0-7ac14ca4adb0.jpeg)
![D6a94d13 a4c1 42d2 b29b e074deec8c1d](https://codegenius.org/uploads/slide/image/2575/d6a94d13-a4c1-42d2-b29b-e074deec8c1d.jpeg)
![D329883a 77af 49c4 a4d1 a15c6864abee](https://codegenius.org/uploads/slide/image/2576/d329883a-77af-49c4-a4d1-a15c6864abee.jpeg)
![A1322af6 0163 40df 91f7 383f41c1552e](https://codegenius.org/uploads/slide/image/2577/a1322af6-0163-40df-91f7-383f41c1552e.jpeg)
![E67d3fa1 077d 43c8 8625 0dc4da3e5b58](https://codegenius.org/uploads/slide/image/2578/e67d3fa1-077d-43c8-8625-0dc4da3e5b58.jpeg)
![E37cabf8 ab34 408e 9f67 217e5a848a23](https://codegenius.org/uploads/slide/image/2579/e37cabf8-ab34-408e-9f67-217e5a848a23.jpeg)
視点移動カメラ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMoveController : MonoBehaviour {
public GameObject player;
public float rotateSpeed;
// (ポイント)「const」 の意味を確認(ヒント;「定数」とは何か?)
private const float angleLimitUp = 30f;
private const float angleLimitDown = -60f;
void Update () {
// カメラの位置とプレーヤーの位置を同期させる。
transform.position = player.transform.position;
// マウスの左ボタンをクリック中のみカメラの角度を変更できる(テクニック)
if(Input.GetMouseButton(0)){
RotateCameraAngle ();
}
// (ポイント)視点移動の可能範囲を制限する。
// (発展)「三項演算子(?:)」をグーグルで調べてみよう。
float angle_x = 180f <= transform.eulerAngles.x ? transform.eulerAngles.x - 360f : transform.eulerAngles.x;
// (ポイント)「Clamp」関数の意味をグーグルで調べてみよう。
transform.eulerAngles = new Vector3(Mathf.Clamp(angle_x, angleLimitDown, angleLimitUp), transform.eulerAngles.y, transform.eulerAngles.z);
}
void RotateCameraAngle(){
// Mouse Xはマウスを横方向に動かした場合の移動量(入力値)を取得する。
// Mouse Yはマウスを縦方向に動かした場合の移動量(入力値)を取得する。
Vector3 angle = new Vector3(Input.GetAxis("Mouse X") * rotateSpeed, -Input.GetAxis("Mouse Y") *rotateSpeed, 0);
// angle.y とangle.xの順序に注意!
transform.eulerAngles += new Vector3(angle.y, angle.x, 0);
}
}
![C2cf6e03 dc94 4e86 8332 eff9aa5ce6be](https://codegenius.org/uploads/slide/image/2580/c2cf6e03-dc94-4e86-8332-eff9aa5ce6be.jpeg)
![9ff2501f ca19 4469 b4fa 3367c87efa3e](https://codegenius.org/uploads/slide/image/2581/9ff2501f-ca19-4469-b4fa-3367c87efa3e.jpeg)
![21e44ee2 2d39 45ba 9818 ee1b0068eb58](https://codegenius.org/uploads/slide/image/2582/21e44ee2-2d39-45ba-9818-ee1b0068eb58.jpeg)
![5962bc71 a166 4a17 af83 bf22466c360a](https://codegenius.org/uploads/slide/image/2583/5962bc71-a166-4a17-af83-bf22466c360a.jpeg)
![Fa4e5635 3db3 4408 ba4c c7a034dacbfa](https://codegenius.org/uploads/slide/image/2584/fa4e5635-3db3-4408-ba4c-c7a034dacbfa.jpeg)
![9eb72a63 fe3b 4c5a a06e 750cd21f3804](https://codegenius.org/uploads/slide/image/2585/9eb72a63-fe3b-4c5a-a06e-750cd21f3804.jpeg)
2台のカメラを切り替える
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMoveController : MonoBehaviour {
public GameObject player;
public float rotateSpeed;
private const float angleLimitUp = 30f;
private const float angleLimitDown = -60f;
// ★追加
public Camera mainCamera;
public Camera subCamera;
private Vector3 angle;
// ★追加
void Start(){
mainCamera.enabled = true;
subCamera.enabled = false;
}
void Update () {
transform.position = player.transform.position;
// ★追加
// メインカメラとサブカメラのY軸の向きを同期させる。
angle = player.transform.eulerAngles;
transform.eulerAngles = new Vector3 (transform.eulerAngles.x, angle.y, transform.eulerAngles.z);
// ★追加(コードを追加しましょう。)
if (Input.GetMouseButton (0)) {
RotateCameraAngle ();
mainCamera.enabled = false;
subCamera.enabled = true;
} else {
mainCamera.enabled = true;
subCamera.enabled = false;
}
float angle_x = 180f <= transform.eulerAngles.x ? transform.eulerAngles.x - 360f : transform.eulerAngles.x;
transform.eulerAngles = new Vector3(Mathf.Clamp(angle_x, angleLimitDown, angleLimitUp), transform.eulerAngles.y, transform.eulerAngles.z);
}
void RotateCameraAngle(){
Vector3 angle = new Vector3(Input.GetAxis("Mouse X") * rotateSpeed, -Input.GetAxis("Mouse Y") *rotateSpeed, 0);
transform.eulerAngles += new Vector3(angle.y, angle.x, 0);
}
}
![E5f6cc96 4993 49e4 bf33 045474a57470](https://codegenius.org/uploads/slide/image/2586/e5f6cc96-4993-49e4-bf33-045474a57470.jpeg)
![567be444 4786 41d9 8fc8 924156062883](https://codegenius.org/uploads/slide/image/2587/567be444-4786-41d9-8fc8-924156062883.jpeg)
EscapeCombat(メモ)
他のコースを見る![89f2d71b c24c 4bb4 9bee 4bb331978440](https://codegenius.org/uploads/slide/image/2572/89f2d71b-c24c-4bb4-9bee-4bb331978440.jpeg)
![04aeff8a af44 494f 8bc0 adb26d9f7eca](https://codegenius.org/uploads/slide/image/2573/04aeff8a-af44-494f-8bc0-adb26d9f7eca.jpeg)
![Ea8596ce 04c6 45c1 b5f0 7ac14ca4adb0](https://codegenius.org/uploads/slide/image/2574/ea8596ce-04c6-45c1-b5f0-7ac14ca4adb0.jpeg)
![D6a94d13 a4c1 42d2 b29b e074deec8c1d](https://codegenius.org/uploads/slide/image/2575/d6a94d13-a4c1-42d2-b29b-e074deec8c1d.jpeg)
![D329883a 77af 49c4 a4d1 a15c6864abee](https://codegenius.org/uploads/slide/image/2576/d329883a-77af-49c4-a4d1-a15c6864abee.jpeg)
![A1322af6 0163 40df 91f7 383f41c1552e](https://codegenius.org/uploads/slide/image/2577/a1322af6-0163-40df-91f7-383f41c1552e.jpeg)
![E67d3fa1 077d 43c8 8625 0dc4da3e5b58](https://codegenius.org/uploads/slide/image/2578/e67d3fa1-077d-43c8-8625-0dc4da3e5b58.jpeg)
![E37cabf8 ab34 408e 9f67 217e5a848a23](https://codegenius.org/uploads/slide/image/2579/e37cabf8-ab34-408e-9f67-217e5a848a23.jpeg)
視点移動カメラ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMoveController : MonoBehaviour {
public GameObject player;
public float rotateSpeed;
// (ポイント)「const」 の意味を確認(ヒント;「定数」とは何か?)
private const float angleLimitUp = 30f;
private const float angleLimitDown = -60f;
void Update () {
// カメラの位置とプレーヤーの位置を同期させる。
transform.position = player.transform.position;
// マウスの左ボタンをクリック中のみカメラの角度を変更できる(テクニック)
if(Input.GetMouseButton(0)){
RotateCameraAngle ();
}
// (ポイント)視点移動の可能範囲を制限する。
// (発展)「三項演算子(?:)」をグーグルで調べてみよう。
float angle_x = 180f <= transform.eulerAngles.x ? transform.eulerAngles.x - 360f : transform.eulerAngles.x;
// (ポイント)「Clamp」関数の意味をグーグルで調べてみよう。
transform.eulerAngles = new Vector3(Mathf.Clamp(angle_x, angleLimitDown, angleLimitUp), transform.eulerAngles.y, transform.eulerAngles.z);
}
void RotateCameraAngle(){
// Mouse Xはマウスを横方向に動かした場合の移動量(入力値)を取得する。
// Mouse Yはマウスを縦方向に動かした場合の移動量(入力値)を取得する。
Vector3 angle = new Vector3(Input.GetAxis("Mouse X") * rotateSpeed, -Input.GetAxis("Mouse Y") *rotateSpeed, 0);
// angle.y とangle.xの順序に注意!
transform.eulerAngles += new Vector3(angle.y, angle.x, 0);
}
}
![C2cf6e03 dc94 4e86 8332 eff9aa5ce6be](https://codegenius.org/uploads/slide/image/2580/c2cf6e03-dc94-4e86-8332-eff9aa5ce6be.jpeg)
![9ff2501f ca19 4469 b4fa 3367c87efa3e](https://codegenius.org/uploads/slide/image/2581/9ff2501f-ca19-4469-b4fa-3367c87efa3e.jpeg)
![21e44ee2 2d39 45ba 9818 ee1b0068eb58](https://codegenius.org/uploads/slide/image/2582/21e44ee2-2d39-45ba-9818-ee1b0068eb58.jpeg)
![5962bc71 a166 4a17 af83 bf22466c360a](https://codegenius.org/uploads/slide/image/2583/5962bc71-a166-4a17-af83-bf22466c360a.jpeg)
![Fa4e5635 3db3 4408 ba4c c7a034dacbfa](https://codegenius.org/uploads/slide/image/2584/fa4e5635-3db3-4408-ba4c-c7a034dacbfa.jpeg)
![9eb72a63 fe3b 4c5a a06e 750cd21f3804](https://codegenius.org/uploads/slide/image/2585/9eb72a63-fe3b-4c5a-a06e-750cd21f3804.jpeg)
2台のカメラを切り替える
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMoveController : MonoBehaviour {
public GameObject player;
public float rotateSpeed;
private const float angleLimitUp = 30f;
private const float angleLimitDown = -60f;
// ★追加
public Camera mainCamera;
public Camera subCamera;
private Vector3 angle;
// ★追加
void Start(){
mainCamera.enabled = true;
subCamera.enabled = false;
}
void Update () {
transform.position = player.transform.position;
// ★追加
// メインカメラとサブカメラのY軸の向きを同期させる。
angle = player.transform.eulerAngles;
transform.eulerAngles = new Vector3 (transform.eulerAngles.x, angle.y, transform.eulerAngles.z);
// ★追加(コードを追加しましょう。)
if (Input.GetMouseButton (0)) {
RotateCameraAngle ();
mainCamera.enabled = false;
subCamera.enabled = true;
} else {
mainCamera.enabled = true;
subCamera.enabled = false;
}
float angle_x = 180f <= transform.eulerAngles.x ? transform.eulerAngles.x - 360f : transform.eulerAngles.x;
transform.eulerAngles = new Vector3(Mathf.Clamp(angle_x, angleLimitDown, angleLimitUp), transform.eulerAngles.y, transform.eulerAngles.z);
}
void RotateCameraAngle(){
Vector3 angle = new Vector3(Input.GetAxis("Mouse X") * rotateSpeed, -Input.GetAxis("Mouse Y") *rotateSpeed, 0);
transform.eulerAngles += new Vector3(angle.y, angle.x, 0);
}
}
![E5f6cc96 4993 49e4 bf33 045474a57470](https://codegenius.org/uploads/slide/image/2586/e5f6cc96-4993-49e4-bf33-045474a57470.jpeg)
![567be444 4786 41d9 8fc8 924156062883](https://codegenius.org/uploads/slide/image/2587/567be444-4786-41d9-8fc8-924156062883.jpeg)
カメラを作成する