自分のタンクに向かって敵タンクが攻撃をしてくるようなAIを作成しているのですが | Unity Forum | Tech Stadium Forum

自分のタンクに向かって敵タンクが攻撃を...
 
通知
すべてクリア

自分のタンクに向かって敵タンクが攻撃をしてくるようなAIを作成しているのですが  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
29/04/2023 11:12 pm  
現在、自分のタンクに向かって敵タンクが攻撃をしてくるようなAIを作成しているのですが、
弾を発射する動作は行うものの、その弾が動いていない(出現後、その場で落ちるだけ)状態になっています。
何度かスクリプトの改修を行ったのですが、一向に改善しないため
どれに問題があるのかご教示いただければ幸いです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class EnamyTankAI : MonoBehaviour
{

    [SerializeField] Transform target;

    public GameObject TargetObject;
    public Rigidbody m_Shell;
    public Transform m_FireTransform;
    public float shotSpeed = 10.0f;
    private float m_CurrentLaunchForce;
    public float m_MinLaunchForce = 15f;
    public float m_MaxLaunchForce = 30f;
    public float m_MaxChargeTime = 0.75f;
    private float time = 1.0f; // 攻撃のインターバル時間

    NavMeshAgent NavMeshAgent;

    // Start is called before the first frame update
    void Start()
    {
        NavMeshAgent = GetComponent<NavMeshAgent>();
        NavMeshAgent.SetDestination(TargetObject.transform.position);

    }

    // Update is called once per frame
    void Update()
    {
        NavMeshAgent.SetDestination(target.position);

        transform.LookAt(TargetObject.transform);
        time -= Time.deltaTime;
        if (time <= 0)
        {
            Fired();
            time = 1.0f;
        }
    }

    void Fired()
    {
        Rigidbody shellInstance = Instantiate(m_Shell, m_FireTransform.position, m_FireTransform.rotation) as Rigidbody;
        m_Shell.AddForce(transform.forward * shotSpeed);

        m_CurrentLaunchForce = m_MinLaunchForce;
    }

}

引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
29/04/2023 11:12 pm  

Shellの動きは、TankがInstantiateをした直後にShellの速度(velocity)に値を代入することによって速度が発生しています。

代入するスクリプトFired()にある78行目です。

上記のスクリプトだと原本プレハブのm_Shellに力を加えてしまっているので、Instantiate後の"shellInstance"の方に力を加えてください。


返信引用
共有:
タイトルとURLをコピーしました