複数の武器を切り替える
![834a4b05 395b 4fcd 850d 45f8e80ce331](https://codegenius.org/uploads/slide/image/2636/834a4b05-395b-4fcd-850d-45f8e80ce331.jpeg)
![034d2906 9f5c 4e58 a0cf a7f82ed4ab92](https://codegenius.org/uploads/slide/image/2637/034d2906-9f5c-4e58-a0cf-a7f82ed4ab92.jpeg)
WeaponController
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponController : MonoBehaviour {
// (復習)
// 「配列」について復習しましょう!
public GameObject[] weapons;
public GameObject[] shotWeapons;
public AudioClip changeSound;
public int currentNum = 0;
public GameObject aimObject;
void Start(){
// 「for文」の「意味」と「使い方」を復習しましょう。
for (int i = 0; i < weapons.Length; i++) {
if (i == currentNum) {
weapons [i].SetActive (true);
} else {
weapons [i].SetActive (false);
}
}
for (int i = 0; i < shotWeapons.Length; i++) {
if (i == currentNum) {
shotWeapons [i].SetActive (true);
} else {
shotWeapons [i].SetActive (false);
}
}
}
void Update(){
// もしも「右クリック」を押した場合には、
if (Input.GetMouseButtonDown (1)) {
AudioSource.PlayClipAtPoint (changeSound, Camera.main.transform.position);
// (重要テクニック)
// 配列の中の順序を1つずつ繰り上げていくテクニック
// 実際に「currentNum」の箱に中に入る数字がどう変化するか書き出してみましょう。
currentNum = (currentNum + 1) % weapons.Length;
for (int i = 0; i < weapons.Length; i++) {
if (i == currentNum) {
weapons [i].SetActive (true);
} else {
weapons [i].SetActive (false);
}
}
for (int i = 0; i < shotWeapons.Length; i++) {
if (i == currentNum) {
shotWeapons [i].SetActive (true);
} else {
shotWeapons [i].SetActive (false);
}
}
}
// もしも「左クリック」を押した場合には、
if (Input.GetMouseButton (0)) {
// 照準器を表示する。
aimObject.SetActive(true);
// 現在選択しているメインカメラモードの武器が非表示(オフ)になる。
weapons [currentNum].SetActive (false);
// 現在選択しているサブカメラモードの武器が表示(オン)になる。
shotWeapons[currentNum].SetActive(true);
} else {
// 照準器を非表示にする。
aimObject.SetActive(false);
// 現在選択しているメインカメラモードの武器が表示(オン)になる。
weapons [currentNum].SetActive (true);
// 現在選択しているサブカメラモードの武器が非表示(オフ)になる。
shotWeapons[currentNum].SetActive(false);
}
}
}
![A04b5c3b 7121 4fbf aed2 98571d5200f7](https://codegenius.org/uploads/slide/image/2638/a04b5c3b-7121-4fbf-aed2-98571d5200f7.jpeg)
![44cd2887 04ef 4757 9237 b382ad6dff41](https://codegenius.org/uploads/slide/image/2639/44cd2887-04ef-4757-9237-b382ad6dff41.jpeg)
![46c1c506 27dd 4178 b881 d7543a3c0e5f](https://codegenius.org/uploads/slide/image/2640/46c1c506-27dd-4178-b881-d7543a3c0e5f.jpeg)
![C8a38052 7f2b 4c15 876f 8287e5d5b05a](https://codegenius.org/uploads/slide/image/2641/c8a38052-7f2b-4c15-876f-8287e5d5b05a.jpeg)
![5cb4ac30 75cd 4f88 af9f d8b39648c3b9](https://codegenius.org/uploads/slide/image/2642/5cb4ac30-75cd-4f88-af9f-d8b39648c3b9.jpeg)
![0d1e5c5f 6910 4eb3 a1e8 fd74e4b3bb1e](https://codegenius.org/uploads/slide/image/2643/0d1e5c5f-6910-4eb3-a1e8-fd74e4b3bb1e.jpeg)
![30a87695 209d 425e 92cd 99c3561683fd](https://codegenius.org/uploads/slide/image/2644/30a87695-209d-425e-92cd-99c3561683fd.jpeg)
![61e4cd5f cdc2 4a3d 95a0 0b7da9fdafd8](https://codegenius.org/uploads/slide/image/2645/61e4cd5f-cdc2-4a3d-95a0-0b7da9fdafd8.jpeg)
CameraMoveController
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;
// ★以下の武器及び照準器に関するコードを削除してください。
//public GameObject aimObject;
//public GameObject rifle;
//public GameObject shotBullet2;
//public GameObject shotRocket2;
//public GameObject rocketLauncher;
void Start(){
mainCamera.enabled = true;
subCamera.enabled = false;
}
void Update () {
transform.position = player.transform.position;
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;
// ★以下の武器及び照準器に関するコードを削除してください。
//aimObject.SetActive(true);
//rifle.SetActive (false);
//shotBullet2.SetActive(true);
//shotRocket2.SetActive(true);
//rocketLauncher.SetActive (false);
} else {
mainCamera.enabled = true;
subCamera.enabled = false;
// ★以下の武器及び照準器に関するコードを削除してください。
//aimObject.SetActive(false);
//rifle.SetActive (true);
//shotBullet2.SetActive(false);
//shotRocket2.SetActive(false);
//rocketLauncher.SetActive (true);
}
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);
}
}
![7375e993 4f32 4dee 8512 e2844d54da78](https://codegenius.org/uploads/slide/image/2646/7375e993-4f32-4dee-8512-e2844d54da78.jpeg)
![5165781f e757 4152 b831 aa3d44846cc0](https://codegenius.org/uploads/slide/image/2647/5165781f-e757-4152-b831-aa3d44846cc0.jpeg)
EscapeCombat(メモ)
他のコースを見る![834a4b05 395b 4fcd 850d 45f8e80ce331](https://codegenius.org/uploads/slide/image/2636/834a4b05-395b-4fcd-850d-45f8e80ce331.jpeg)
![034d2906 9f5c 4e58 a0cf a7f82ed4ab92](https://codegenius.org/uploads/slide/image/2637/034d2906-9f5c-4e58-a0cf-a7f82ed4ab92.jpeg)
WeaponController
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponController : MonoBehaviour {
// (復習)
// 「配列」について復習しましょう!
public GameObject[] weapons;
public GameObject[] shotWeapons;
public AudioClip changeSound;
public int currentNum = 0;
public GameObject aimObject;
void Start(){
// 「for文」の「意味」と「使い方」を復習しましょう。
for (int i = 0; i < weapons.Length; i++) {
if (i == currentNum) {
weapons [i].SetActive (true);
} else {
weapons [i].SetActive (false);
}
}
for (int i = 0; i < shotWeapons.Length; i++) {
if (i == currentNum) {
shotWeapons [i].SetActive (true);
} else {
shotWeapons [i].SetActive (false);
}
}
}
void Update(){
// もしも「右クリック」を押した場合には、
if (Input.GetMouseButtonDown (1)) {
AudioSource.PlayClipAtPoint (changeSound, Camera.main.transform.position);
// (重要テクニック)
// 配列の中の順序を1つずつ繰り上げていくテクニック
// 実際に「currentNum」の箱に中に入る数字がどう変化するか書き出してみましょう。
currentNum = (currentNum + 1) % weapons.Length;
for (int i = 0; i < weapons.Length; i++) {
if (i == currentNum) {
weapons [i].SetActive (true);
} else {
weapons [i].SetActive (false);
}
}
for (int i = 0; i < shotWeapons.Length; i++) {
if (i == currentNum) {
shotWeapons [i].SetActive (true);
} else {
shotWeapons [i].SetActive (false);
}
}
}
// もしも「左クリック」を押した場合には、
if (Input.GetMouseButton (0)) {
// 照準器を表示する。
aimObject.SetActive(true);
// 現在選択しているメインカメラモードの武器が非表示(オフ)になる。
weapons [currentNum].SetActive (false);
// 現在選択しているサブカメラモードの武器が表示(オン)になる。
shotWeapons[currentNum].SetActive(true);
} else {
// 照準器を非表示にする。
aimObject.SetActive(false);
// 現在選択しているメインカメラモードの武器が表示(オン)になる。
weapons [currentNum].SetActive (true);
// 現在選択しているサブカメラモードの武器が非表示(オフ)になる。
shotWeapons[currentNum].SetActive(false);
}
}
}
![A04b5c3b 7121 4fbf aed2 98571d5200f7](https://codegenius.org/uploads/slide/image/2638/a04b5c3b-7121-4fbf-aed2-98571d5200f7.jpeg)
![44cd2887 04ef 4757 9237 b382ad6dff41](https://codegenius.org/uploads/slide/image/2639/44cd2887-04ef-4757-9237-b382ad6dff41.jpeg)
![46c1c506 27dd 4178 b881 d7543a3c0e5f](https://codegenius.org/uploads/slide/image/2640/46c1c506-27dd-4178-b881-d7543a3c0e5f.jpeg)
![C8a38052 7f2b 4c15 876f 8287e5d5b05a](https://codegenius.org/uploads/slide/image/2641/c8a38052-7f2b-4c15-876f-8287e5d5b05a.jpeg)
![5cb4ac30 75cd 4f88 af9f d8b39648c3b9](https://codegenius.org/uploads/slide/image/2642/5cb4ac30-75cd-4f88-af9f-d8b39648c3b9.jpeg)
![0d1e5c5f 6910 4eb3 a1e8 fd74e4b3bb1e](https://codegenius.org/uploads/slide/image/2643/0d1e5c5f-6910-4eb3-a1e8-fd74e4b3bb1e.jpeg)
![30a87695 209d 425e 92cd 99c3561683fd](https://codegenius.org/uploads/slide/image/2644/30a87695-209d-425e-92cd-99c3561683fd.jpeg)
![61e4cd5f cdc2 4a3d 95a0 0b7da9fdafd8](https://codegenius.org/uploads/slide/image/2645/61e4cd5f-cdc2-4a3d-95a0-0b7da9fdafd8.jpeg)
CameraMoveController
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;
// ★以下の武器及び照準器に関するコードを削除してください。
//public GameObject aimObject;
//public GameObject rifle;
//public GameObject shotBullet2;
//public GameObject shotRocket2;
//public GameObject rocketLauncher;
void Start(){
mainCamera.enabled = true;
subCamera.enabled = false;
}
void Update () {
transform.position = player.transform.position;
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;
// ★以下の武器及び照準器に関するコードを削除してください。
//aimObject.SetActive(true);
//rifle.SetActive (false);
//shotBullet2.SetActive(true);
//shotRocket2.SetActive(true);
//rocketLauncher.SetActive (false);
} else {
mainCamera.enabled = true;
subCamera.enabled = false;
// ★以下の武器及び照準器に関するコードを削除してください。
//aimObject.SetActive(false);
//rifle.SetActive (true);
//shotBullet2.SetActive(false);
//shotRocket2.SetActive(false);
//rocketLauncher.SetActive (true);
}
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);
}
}
![7375e993 4f32 4dee 8512 e2844d54da78](https://codegenius.org/uploads/slide/image/2646/7375e993-4f32-4dee-8512-e2844d54da78.jpeg)
![5165781f e757 4152 b831 aa3d44846cc0](https://codegenius.org/uploads/slide/image/2647/5165781f-e757-4152-b831-aa3d44846cc0.jpeg)
複数の武器を切り替える