(1)砲弾発射のスクリプト
- マウス右クリックで砲弾発射
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShotShell_1 : MonoBehaviour { public GameObject shellPrefab; public AudioClip sound; void Update() { // マウスの右クリックで砲弾発射 if(Input.GetMouseButtonDown(1)) { GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity); Rigidbody shellRb = shell.GetComponent<Rigidbody>(); shellRb.AddForce(transform.forward * 1000); AudioSource.PlayClipAtPoint(sound, transform.position); Destroy(shell, 3f); } } }
(2)ヘッド部分旋回のスクリプト
- マウス左クリックでロックオン・・・>カメラ位置に砲塔を旋回させる。
- マウスホイールの「クリック」で砲塔が瞬時に正面に戻る。
- マウスホイールの「長押し」で砲塔がゆっくり正面に戻る。
*2と3は適宜どちらかを選択
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HeadController_2 : MonoBehaviour { private Quaternion targetRotation; void Start() { targetRotation = transform.rotation; } void Update() { // マウス左クリックでロックオン // カメラ位置に砲塔を旋回させる。 if(Input.GetMouseButtonDown(0)) { var rotationHorizontal = Quaternion.AngleAxis(Camera.main.transform.eulerAngles.y, Vector3.up); transform.rotation = rotationHorizontal; } // マウスホイールのクリックで砲塔が正面に戻る if (Input.GetMouseButtonDown(2)) { // 瞬時に戻る。 transform.localRotation = Quaternion.Euler(0, 0, 0); } // マウスホイールの長押しで砲塔が正面に戻る if (Input.GetMouseButton(2)) { // ゆっくり戻る。 transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, 0), Time.deltaTime * 3); } } }