- Home /
Strange Parsing Error
So I am making a game using the "Let's Try Assignments" course and instead of hurting the blocks I just apply force. I want to apply a positive force to push when left mouse is pressed, and a negative to pull when right mouse is pressed. The left mouse is functional and I tried to copy and paste the script over and change around some variables, inputs, and what not and I believe I got it working, however the sound and visuals have a parsing error after I triple checked my script. It says that I also have an error with putting private in front of IENumerator but I think that's because of the parsing error. Here is the whole script, the last part is the part where the parsing error is, but I will include it all because I might have to change something else.
using UnityEngine;
using System.Collections;
public class RaycastShootComplete : MonoBehaviour {
public int gunDamage = 1; // Set the number of hitpoints that this gun will take away from shot objects with a health script
public float fireRate = 0.25f; // Number in seconds which controls how often the player can fire
public float weaponRange = 50f; // Distance in Unity units over which the player can fire
private float neghitForce; // Amount of force which will be added to objects with a rigidbody pulled by the player
public float hitForce = 100000f; // Amount of force which will be added to objects with a rigidbody shot by the player
public Transform gunEnd; // Holds a reference to the gun end object, marking the muzzle location of the gun
private Camera fpsCam; // Holds a reference to the first person camera
private WaitForSeconds shotDuration = new WaitForSeconds(0.07f); // WaitForSeconds object used by our ShotEffect coroutine, determines time laser line will remain visible
private AudioSource gunAudio; // Reference to the audio source which will play our shooting sound effect
private LineRenderer laserLine; // Reference to the LineRenderer component which will display our laserline
private float nextFire; // Float to store the time the player will be allowed to fire again, after firing
void Start ()
{
// Get and store a reference to our LineRenderer component
laserLine = GetComponent<LineRenderer>();
// Get and store a reference to our AudioSource component
gunAudio = GetComponent<AudioSource>();
// Get and store a reference to our Camera by searching this GameObject and its parents
fpsCam = GetComponentInParent<Camera>();
}
void Update ()
{
// Check if the player has pressed the fire button and if enough time has elapsed since they last fired
if (Input.GetButtonDown("Fire1") && Time.time > nextFire)
{
// Update the time when our player can fire next
nextFire = Time.time + fireRate;
// Start our ShotEffect coroutine to turn our laser line on and off
StartCoroutine (ShotEffect());
// Create a vector at the center of our camera's viewport
Vector3 rayOrigin = fpsCam.ViewportToWorldPoint (new Vector3(0.5f, 0.5f, 0.0f));
// Declare a raycast hit to store information about what our raycast has hit
RaycastHit hit;
// Set the start position for our visual effect for our laser to the position of gunEnd
laserLine.SetPosition (0, gunEnd.position);
// Check if our raycast has hit anything
if (Physics.Raycast (rayOrigin, fpsCam.transform.forward, out hit, weaponRange))
{
// Set the end position for our laser line
laserLine.SetPosition (1, hit.point);
// Get a reference to a health script attached to the collider we hit
ShootableBox health = hit.collider.GetComponent<ShootableBox>();
// If there was a health script attached
if (health != null)
{
// Call the damage function of that script, passing in our gunDamage variable
health.Damage (gunDamage);
}
// Check if the object we hit has a rigidbody attached
if (hit.rigidbody != null)
{
// Add force to the rigidbody we hit, in the direction from which it was hit
hit.rigidbody.AddForce (-hit.normal * hitForce);
}
}
if (Input.GetButtonDown("Fire2") && Time.time > nextFire)
{
// Update the time when our player can fire next
nextFire = Time.time + fireRate;
// Start our ShotEffect coroutine to turn our laser line on and off
StartCoroutine (ShotEffect());
// Create a vector at the center of our camera's viewport
Vector3 rayOrigin2 = fpsCam.ViewportToWorldPoint (new Vector3(0.5f, 0.5f, 0.0f));
// Declare a raycast hit to store information about what our raycast has hit
RaycastHit hit2;
// Set the start position for our visual effect for our laser to the position of gunEnd
laserLine.SetPosition (0, gunEnd.position);
// Check if our raycast has hit anything
if (Physics.Raycast (rayOrigin, fpsCam.transform.forward, out hit2, weaponRange))
{
// Set the end position for our laser line
laserLine.SetPosition (1, hit2.point);
// Get a reference to a health script attached to the collider we hit
ShootableBox health = hit2.collider.GetComponent<ShootableBox>();
// If there was a health script attached
if (health != null)
{
// Call the damage function of that script, passing in our gunDamage variable
health.Damage (gunDamage);
}
// Check if the object we hit has a rigidbody attached
if (hit2.rigidbody != null)
{
// Add pulling force to the rigidbody we hit, in the direction from which it was hit
hit2.rigidbody.AddForce (-hit2.normal * neghitForce);
}
}
{
// If we did not hit anything, set the end of the line to a position directly in front of the camera at the distance of weaponRange
laserLine.SetPosition (1, rayOrigin + (fpsCam.transform.forward * weaponRange));
}
}
IEnumerator ShotEffect;
{
// Play the shooting sound effect
gunAudio.Play ();
// Turn on our line renderer
laserLine.enabled = true;
//Wait for .07 seconds
yield return shotDuration;
// Deactivate our line renderer after waiting
laserLine.enabled = false;
}
The error code is (135,25): error CS8025: Parsing error (which is that last line)
Can replies be in C# only? Please tell me how to fix :) thx.
Answer by aditya · Oct 10, 2016 at 05:12 AM
you have ; instead of () in front of ShotEffect declaration
Ah, I see. Whenever I get home I will test that and get back to you :)