public float speed = 0.4f;
Vector2 destination = Vector2.zero;
// Use this for initialization
void Start () {
destination = transform.position;
}
// Update is called once per frame
void FixedUpdate () {
Vector2 p = Vector2.MoveTowards (transform.position, destination, speed);
GetComponent ().MovePosition (p);
if ((Vector2)transform.position == destination) {
if(Input.GetKey(KeyCode.UpArrow) && valid(Vector2.up))
destination = (Vector2)transform.position + Vector2.up;
if(Input.GetKey(KeyCode.DownArrow) && valid(-Vector2.up))
destination = (Vector2)transform.position - Vector2.up;
if(Input.GetKey(KeyCode.RightArrow) && valid(Vector2.right))
destination = (Vector2)transform.position + Vector2.right;
if(Input.GetKey(KeyCode.LeftArrow) && valid(-Vector2.right))
destination = (Vector2)transform.position - Vector2.right;
}
Vector2 dir = destination - (Vector2)transform.position;
GetComponent ().SetFloat ("DirX", dir.x);
GetComponent ().SetFloat ("DirY", dir.y);
}
bool valid(Vector2 dir){
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Linecast (pos + dir, pos);
return (hit.collider == collider2D);
}
// I get error here: return (hit.collider == collider2D);
↧