バージョン:Unity 2019.2.11f1 (64-bit)
以下のリンクのスライドの7番目に記載のある
垂直ミサイル(Vertical)をつくりたいがわかりませんでした。
https://docs.google.com/presentation/d/1AF2WsY8ltX2yfD7zi1loAAa3mcUM6QOp6tB1DXj3Lz8/edit#slide=id.p
ミサイル発射後、真上に上がったあと
綺麗な円弧を描いてターゲットに命中するミサイルです。
綺麗に対象に当たる
スクリプト
がわかれば教えていただきたいです。
調べていくと
物体の投射運動
弾道学
というところにいきついたのですが自分の頭では理解ができませんでした。
よろしくお願いいたします。
追記です。こういうコードを書いていたのですが、動きが不自然となってしましました。
ーー
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class missile2_src : MonoBehaviour
{
public GameObject target; //ミサイルのターゲットをセット
public float Forward_speed =10f;
public float h_time = 1.5f; //まっすぐ進む時間
public float missile_Look_speed = 0.03f; bool stop_f = false; bool homing_f = false; // 出現させるエフェクト [SerializeField] private GameObject effectObject; // エフェクトを消す秒数 [SerializeField] private float deleteTime; // エフェクトの出現位置のオフセット値 [SerializeField] private float offset; void Start() { transform.rotation = Quaternion.Euler(-90,0, 0); Invoke("homing_on", h_time); } void Update() { if (stop_f == false) { transform.position += transform.forward * Forward_speed; } if (homing_f) { float step = Time.deltaTime * Forward_speed; transform.position = Vector3.MoveTowards(transform.position, target.transform.position, step); this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(target.transform.position - this.transform.position), missile_Look_speed); transform.position += transform.forward * Time.deltaTime * Forward_speed *50f;//このスピードだと遅いため、数十倍している } } void homing_on() { stop_f = true; homing_f = true; } void OnTriggerEnter(Collider col) { Vector3 hitPos = col.ClosestPointOnBounds(this.transform.position); var instantiateEffect = GameObject.Instantiate(effectObject, hitPos + new Vector3(0f, offset, 0f), Quaternion.identity) as GameObject; Destroy(instantiateEffect, deleteTime); homing_f = false; Destroy(this.gameObject, deleteTime); }
}