您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 学习培训 > Unity编程 >
    导弹追踪代码
    时间:2015-03-18 09:12 来源:Unity之家 作者:unity.jb51.net 浏览:收藏 挑错 推荐 打印



    导弹追踪,方法一简单,但效果一般,建议采用方法二。


    using UnityEngine;    
    using System.Collections;    
    public class AIFollow : MonoBehaviour {    
    public GameObject man;    
    public GameObject missile;    
    public float manSpeed = 6f;    
    public float missileSpeed = 4f;    
    public float missileRotateSpeed = 2f;    
    bool whehterShooted = false;    
    float distance;    
    float collisionDistance;    
    // Use this for initialization    
    void Start () {    
    if (man!=null&&missile!=null)    
    {    
    float manWidth = man.GetComponent().mesh.bounds.size.x*man.transform.localScale.x;    
    float missileLength = missile.GetComponent().mesh.bounds.size.z * missile.transform.localScale.z;    
    print("manWidth:"+manWidth.ToString()+",missileLength:"+missileLength.ToString());    
    collisionDistance = manWidth / 2 + missileLength / 2;    
    }    
    }    
    // Update is called once per frame    
    void Update () {    
    if (Input.GetKey (KeyCode.LeftArrow))    
    {    
    man.transform.Translate(Vector3.left*Time.deltaTime*manSpeed);    
    }    
    if (Input.GetKey(KeyCode.RightArrow))    
    {    
    man.transform.Translate(-Vector3.left * Time.deltaTime * manSpeed);    
    }    
    if (Input.GetKey(KeyCode.UpArrow))    
    {    
    man.transform.Translate(Vector3.forward * Time.deltaTime * manSpeed);    
    }    
    if (Input.GetKey(KeyCode.DownArrow))    
    {    
    man.transform.Translate(-Vector3.forward * Time.deltaTime * manSpeed);    
    }    
    if (Input.GetKeyDown(KeyCode.S))//按下S 发射导弹    
    {    
    whehterShooted = true;    
    }    
    if (whehterShooted&&missile!=null)    
    {    
    distance = Vector3.Distance(man.transform.position, missile.transform.position);    
    ////导弹朝向人  法一    
    //missile.transform.LookAt(man.transform);    
    //导弹朝向人  法二    
    Quaternion missileRotation = Quaternion.LookRotation(man.transform.position - missile.transform.position, Vector3.up);    
    //missile.transform.rotation = Quaternion.Slerp(missile.transform.rotation, missileRotation, Time.deltaTime * missileRotateSpeed);    
    missile.transform.rotation = missileRotation;


    快快测试下吧。。。

    有什么不明白的地方,记得留言哟。。。




    (责任编辑:脚印)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
    标签:Unity之家