(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);
}
}
}