bool valid(Vector2 dir) {
// Cast Line from ‘next to Pac-Man’ to ‘Pac-Man’
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos);
return (hit.collider == collider2D);
}
This doesn’t seem to be working giving me the following error on the top line:
A namespace can only contain types and namespace declarations
I need help! Thank you!
Is that all of the code in the file? This function needs to be inside of a class.
Actually the entirety of the code is this, I just wasn’t sure that you needed it. Sorry!
using UnityEngine;
using System.Collections;
public class PacmanMove : MonoBehaviour
{
public float speed = 0.4f;
Vector2 dest = Vector2.zero;
void Start()
{
dest = transform.position;
}
void FixedUpdate()
{
// Move closer to Destination
Vector2 p = Vector2.MoveTowards(transform.position, dest, speed);
GetComponent().MovePosition(p);
// Check for Input if not moving
if ((Vector2)transform.position == dest)
{
if (Input.GetKey(KeyCode.UpArrow) && valid(Vector2.up))
dest = (Vector2)transform.position + Vector2.up;
if (Input.GetKey(KeyCode.RightArrow) && valid(Vector2.right))
dest = (Vector2)transform.position + Vector2.right;
if (Input.GetKey(KeyCode.DownArrow) && valid(-Vector2.up))
dest = (Vector2)transform.position - Vector2.up;
if (Input.GetKey(KeyCode.LeftArrow) && valid(-Vector2.right))
dest = (Vector2)transform.position - Vector2.right;
}
}
}
bool valid(Vector2 dir) {
// Cast Line from ‘next to Pac-Man’ to ‘Pac-Man’
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos);
return (hit.collider == collider2D);
}
The right brace “}” before “bool valid” is closing the class definition. Make sure all of your code lines up and is indented properly between braces and that will jump out at you.
Because your class definition is over at that point, the compiler is complaining that you’re trying to create something in the namespace that isn’t a type or another namespace. Move that brace down to the bottom and you should be good to go.