其他分享
首页 > 其他分享> > Unity3D 通过向量飞机移动 调头到对象 两物体间距离

Unity3D 通过向量飞机移动 调头到对象 两物体间距离

作者:互联网

 Unity3D 通过向量飞机移动 调头到对象 两物体间距离

 

移动

using UnityEngine;
using System.Collections;

public class move : MonoBehaviour {
	public bool upward = true;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if (upward && transform.position.y > 5) {
			upward = false;
			transform.localEulerAngles = new Vector3(0, 0 , 180);
		}
		if (!upward && transform.position.y < -5) {
			upward = true;
			transform.localEulerAngles = new Vector3(0, 0 , 0);
		}
		float step = 1.6f * Time.deltaTime; //每帧移动的距离
		transform.Translate(0, step, 0, Space.Self);
	}
}

 调头到目标对象移动

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

public class turn : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
		Debug.Log("x轴向量:" + transform.right.ToString("F3"));
		Debug.Log("y轴向量:" + transform.up.ToString("F3"));
		Debug.Log("z轴向量:" + transform.forward.ToString("F3"));
		Vector3 face = this.transform.up;
		GameObject target = GameObject.Find("peiqi3");
		Vector3 direction = target.transform.position - this.transform.position;
		float angle = Vector3.SignedAngle(face, direction, Vector3.forward);
		this.transform.Rotate(0, 0, angle);
        
    }

    // Update is called once per frame
    void Update()
    {
        float step = 1.6f * Time.deltaTime; //每帧移动的距离
		transform.Translate(0, step, 0, Space.Self);
    }
}

距离

using UnityEngine;
using System.Collections;

public class distance : MonoBehaviour {

	// Use this for initialization
	void Start () {
		GameObject target = GameObject.Find("peiqi3");
		Vector3 p2 = target.transform.position;
		Vector3 p1 = this.transform.position;
		Vector3 distance = p2 - p1;
		Debug.Log("两物体间的距离为:" + distance.magnitude);
		
		Vector3 a = new Vector3(2, 2, 0);
		Vector3 b = new Vector3(-1, 3, 0);
		float angle = Vector3.SignedAngle(a, b, Vector3.forward);
		Debug.Log("两物体间的角度为:" + angle);
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

标签:Unity3D,void,Vector3,transform,Update,position,using,向量,调头
来源: https://blog.csdn.net/rong11417/article/details/122785348