★Anton Komine

<2024年1月6日>

(スクリプト1)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HeadController_Z : MonoBehaviour
{
    public AimController_Z acz;
    private Vector3 targetPosition;

    public float speed;
    private float step;

    void Update()
    {
        // (テクニック)「ターゲットの高さ」と「戦車ヘッドの高さ」を揃える。
        // これでヘッド部分が「真横に旋回」するようになる。
        acz.targetPos.y = transform.position.y;

        targetPosition = acz.targetPos;
      
        step = speed * Time.deltaTime;

        Vector3 targetDir = targetPosition - transform.position;

        Vector3 moveDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0f);

        transform.rotation = Quaternion.LookRotation(moveDir);
    }
}

(スクリプト2)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class AimController_Z : MonoBehaviour
{
    public Vector3 targetPos;
    public Image aimImage;
    
    void Update()
    {
        // 「マウスの位置」と「照準器の位置」を同期させる。
        transform.position = Input.mousePosition;

        RaycastHit hit;

        // MainCameraからマウスの位置にRayを飛ばす
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);


        if (Physics.Raycast(ray, out hit))
        {
            // RayがColliderと衝突した地点の座標を取得
            targetPos = hit.point;
            print(targetPos);

            if(hit.transform.CompareTag("Enemy"))
            {
                // 照準器を赤色に変化させる。
                aimImage.color = new Color(1.0f, 0.0f, 0.0f, 1.0f);
            }
            else
            {
                // 照準器の色は白
                aimImage.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
            }
        }
        else
        {
            // 照準器の色は白
            aimImage.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
        }
    }
}