Mine not working either. I don’t have the new before the first Vector3.
Whole Code:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playerController : MonoBehaviour {
[SerializeField] public float padding = 0.7f;
[SerializeField] public float shipSpeed;
//only to view not to change
[SerializeField] float xMin;
[SerializeField] float xMax;
public GameObject laserPreFab;
[SerializeField] float projectileSpeed = 10f;
[SerializeField] float fireRate;
public float health = 300f;
void OnTriggerEnter2D(Collider2D collision)
{
Projectile missile = collision.gameObject.GetComponent<Projectile>();
if (missile)
{
health -= missile.GetDamage();
missile.Hit();
if (health <= 0)
{
Die();
}
}
}
void Die()
{
Destroy(gameObject);
}
// Use this for initialization
void Start () {
//automatically calculates min and max x
float distance = transform.position.z - Camera.main.transform.position.z;
Vector3 leftMost = Camera.main.ViewportToWorldPoint(new Vector3(0, 0, distance));
Vector3 rightMost = Camera.main.ViewportToWorldPoint(new Vector3(1, 0, distance));
xMin = leftMost.x + padding;
xMax = rightMost.x - padding;
}
void LaserFire()
{
Vector3 offset = new Vector3(0, 1, 0);
GameObject beam = Instantiate(laserPreFab, transform.position, Quaternion.identity) as GameObject;
beam.GetComponent<Rigidbody2D>().velocity = new Vector3(0, projectileSpeed, 0);
}
// Update is called once per frame
void Update () {
//Fixes bug where left or right movement was interrupted with only one if statement.
if (Input.GetKey(KeyCode.LeftArrow))
{
//transform.position += new Vector3(shipSpeed, 0, 0);
transform.position += Vector3.left * shipSpeed * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.RightArrow))
{
//transform.position += new Vector3(-shipSpeed, 0, 0);
transform.position += Vector3.right * shipSpeed * Time.deltaTime;
}
//redundancy to fix movement bug listed above.
if (Input.GetKey(KeyCode.RightArrow))
{
//transform.position += new Vector3(shipSpeed, 0, 0);
transform.position += Vector3.right * shipSpeed * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.LeftArrow))
{
//transform.position += new Vector3(-shipSpeed, 0, 0);
transform.position += Vector3.left * shipSpeed * Time.deltaTime;
}
//restrict player to game space.
float newX = Mathf.Clamp(transform.position.x, xMin, xMax);
transform.position = new Vector3(newX, transform.position.y, transform.position.z);
//Laser Fire
if (Input.GetKeyDown(KeyCode.Space))
{
InvokeRepeating("LaserFire", 0.00001f, fireRate);
}
if (Input.GetKeyUp(KeyCode.Space))
{
CancelInvoke("LaserFire");
}
}
}