Viewport in the game, how to create a path~

In the game window, you can create your own at some point generate a path. You can add a camera to follow the path。 This camera can generate different paths 。 Click the Generate button to see the different camera paths! thank you!!

var cube1 :Transform;
var speed : float = 2;

//private var currentWaypoint : int = 0;

//var waypoint : Vector3;

function OnGUI ()
{
GUI.Button(Rect(0,0,100,30),“add path”);
GUI.Button(Rect(0,35,100,30),“add Camera”);

}

function Update ()
{

var hit :RaycastHit;

var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

if (Physics.Raycast (ray,hit,1000)) {
	
	if(Input.GetMouseButtonDown(0)){
		
		var cube2 =Instantiate(cube1,transform.position,Quaternion.identity);
		cube2.transform.position=hit.point;
		
	}
	
}




//hit.point- Camera.main.transform.position

var relativePos : Vector3 = cube2.transform.position ;


//var rotation : Quaternion = Quaternion.LookRotation(relativePos);

transform.position = Vector3.MoveTowards(transform.position, relativePos, Time.deltaTime * speed);
//transform.LookAt(target);

}

1 Answer

1

it seems you want to make paths by clicking and having those points listed to move to points down the list… something like this?

    var pathList:Array;
    var currentTarg:Vector3;
    var proximityMin:float;
    var walker:GameObject;
    var speed:float;
    function Update(){
        if(Input.GetButtonDown("Fire1")){
        var hit:RaycastHit;
            if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition,hit))){
                 pathList.Add(hit.point);
            }
        }
    }
    function FixedUpdate(){
        if(walker&&pathList.length>0){
            walker.transform.position=walker.transform.position+((walker.transform.position-currentTarg).normalized*speed*Time.deltaTime);
            if(Vector3.Distance(walker.transform.position,pathList[0])<proximityMin){
                pathList.Shift();
            }
        }
    }