The error : No overload for method 'Clamps' takes 1 argument.
using UnityEngine; using System.Collections;
[System.Serializable] public class Boundary { public float xMin, xMax, zMin, zMax; }
public class PlayerController : MonoBehaviour {
public float speed;
public float tilt;
public Boundary boundary;
public GameObject shot;
public GameObject shotSpawn;
public float fireRate;
private float nextFire;
void Update ()
{
if (Input.GetButton("Jump") && Time.time > nextFire)
{
shot = Instantiate(shot) as GameObject;
nextFire = Time.time + fireRate;
//GameObject clone =
shot.transform.position = shotSpawn.transform.position;
}
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
GetComponent<Rigidbody> ().velocity = movement * speed;
GetComponent<Rigidbody> ().position = new Vector3
(Mathf.Clamp (GetComponent ().position.x, boundary.xMin, boundary.xMax), 0.0f, Mathf.Clamp (GetComponent ().position.z), boundary.zMin, boundary.zMax); GetComponent().rotation = Quaternion.Euler (0.0f, 0.0f, GetComponent().velocity.x * -tilt); } }
It says the error is in this line of code.
Answer by Bunny83 · Dec 18, 2017 at 12:58 AM
You have a closing bracket after position.z which should be at the end of the line.
Thanks, I cant believe I didnt see that. But it still says ") expected" on the same line. Still cant get it to work.
Are you sure that you deleted the bracket after position.z and added one at the end of the line? Every opening bracket requires a closing bracket. Always.
If you have trouble with that simple syntax rules you may should avoid writing that long and nested lines.
First of all you should avoid using GetComponent every frame (let alone using it several times in one frame, especially to get the same component). Declare a Rigidbody variable in your class and use GetComponent once in Start
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.velocity = movement * speed;
Vector3 pos = rb.position;
pos.x = $$anonymous$$athf.Clamp(pos.x, boundary.x$$anonymous$$in, boundary.x$$anonymous$$ax);
pos.y = 0f;
pos.z = $$anonymous$$athf.Clamp(pos.z, boundary.z$$anonymous$$in, boundary.z$$anonymous$$ax);
rb.position = pos;
rb.rotation = Quaternion.Euler (0.0f, 0.0f, rb.velocity.x * -tilt);
}
Your answer