Click and Run - система
function ShootRay() {
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
var hit : RaycastHit;
if(Physics.Raycast(ray, hit, Mathf.Infinity)) {
var moveScript : UnitMoveable = unit.GetComponent("UnitMoveable");
if (moveScript) {
moveScript.MoveTo(hit.point);
}
}
}
var moveSpeed : float = 2.0f;
private var vDestination : Vector3;
private var isMoving : boolean;
function Start () {
isMoving = false;
}
function FixedUpdate () {
if (isMoving) {
if (transform.position.Equals(vDestination)) {
isMoving = false;
}
else {
// Vector will do a linear interpolation between our current position and our destination
var v : Vector3;
v = Vector3.Lerp(transform.position,vDestination,Time.fixedDeltaTime * moveSpeed);
// Raycast to the surface below our next destination step to make sure we are standing on it
// this is probably not efficient for large numbers
var hit : RaycastHit;
if (Physics.Raycast(v, Vector3.down, hit, 5.0f)) {
// collider.bounds.extents.y will be half of the height of the bounding box
// only useful if your pivot point is in the center, if it's at the feet you don't need this
v.y = hit.point.y + collider.bounds.extents.y;
}
// set our position to the new destination
transform.position = v;
}
}
}
function MoveTo (vPoint:Vector3) {
vDestination = vPoint;
isMoving = true;
}
Hello! Very interesting blog!
ОтветитьУдалить