Unity小地圖

using UnityEngine;
using System.Collections;

public class smalleMap : MonoBehaviour {

	GameObject plane;
	GameObject cube;

	float mapWidth;
	float mapHeight;
	float widthCheck;
	float heightCheck;
	float mapcube_x = 0;
	float mapcube_y = 0;

	bool keyUp ;
	bool keyDown;
	bool keyLeft;
	bool keyRight;

	public Texture map;
	public Texture map_cube;
	
	// Use this for initialization
	void Start () {
		plane = GameObject.Find ("Plane");
		cube = GameObject.Find ("third");
		Debug.Log (plane.transform.localRotation.w);
		float size_x = plane.GetComponent<MeshFilter> ().mesh.bounds.size.x;
		float scal_x = plane.transform.localScale.x;
		float size_z = plane.GetComponent<MeshFilter> ().mesh.bounds.size.z;
		float scal_z = plane.transform.localScale.z;

		mapWidth = size_x * scal_x;
		mapHeight = size_z * scal_z;

		widthCheck = mapWidth / 2;
		heightCheck = mapHeight / 2;
		check();
	}
	void OnGUI(){
		keyUp = GUILayout.RepeatButton ("go");
		keyDown = GUILayout.RepeatButton("back");
		keyLeft = GUILayout.RepeatButton ("left");
		keyRight = GUILayout.RepeatButton ("right");

		GUI.DrawTexture (new Rect (Screen.width - map.width, 0, map.width, map.height), map);
		GUI.DrawTexture (new Rect (mapcube_x, mapcube_y, map_cube.width, map_cube.height), map_cube);
	}
	// Update is called once per frame
	void Update () {
	
		if (keyUp) {
			cube.transform.Translate(Vector3.forward * Time.deltaTime * 5);
			check ();
		}
	}

	void check(){
		float x = cube.transform.position.x;
		float z = cube.transform.position.z;

		if (x >= widthCheck) {
			x = widthCheck;
		}
		if (x <= -widthCheck) {
			x = -widthCheck;
		}
		if (z >= heightCheck) {
			z = heightCheck;
		}
		if (z <= -heightCheck) {
			z = -heightCheck;
		}
		cube.transform.position = new Vector3 (x,cube.transform.position.y,z);

		//mapcube_x = (map.width / mapWidth * x) + ((map.width / 2) - (map_cube.width / 2)) + (Screen.width - map.width);

		mapcube_x = (map.width - map_cube.width) + (map.width/map_cube.width*x) + (Screen.width - map.width);
		mapcube_y = map.height - (map.height - map_cube.height) - map.height / mapHeight * z;
		//mapcube_y = map.height - ((map.height/mapHeight*z)+(map.height/2));
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章