Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Plz help to fix my problem

This code is seems to be work ok when player is near the to the starting position ,But when I go far from the the start position it not work good at all ,I try every possible aspects from me but i cant fix the problem . plz can any one help me to get rid from this issue.I take this code from "how to make 2d platformer code".

soory for bad english,



using UnityEngine;

using System.Collections;


public class Weapon : MonoBehaviour {


public float fireRate = 0;

public int Damage = 10;

public LayerMask whatToHit;

public Transform BulletTrailPrefab;

public Transform HitPrefab;

public Transform MuzzleFlashPrefab;

float timeToSpawnEffect = 0;

public float effectSpawnRate = 10;



float timeToFire = 0;

Transform firePoint;


public string shotSoundName;

public string hitSoundName;



// Use this for initialization

void Awake () {

firePoint = transform.Find ("FirePoint");

if (firePoint == null) {

Debug.LogError ("No firePoint? WHAT?!");

}

}


private AudioManager audioManager;

void Start()

{


audioManager = AudioManager.instance;

if (audioManager == null)

{

Debug.LogError("FREAK OUT! No audioManager found in the scene. ");

}

}

// Update is called once per frame

void Update () {

if (fireRate == 0) {

if (Input.GetButtonDown ("Fire1")) {

Shoot();

}

}

else {

if (Input.GetButton ("Fire1") && Time.time > timeToFire) {

timeToFire = Time.time + 1/fireRate;

Shoot();

}

}

}

void Shoot () {

Vector2 mousePosition = new Vector2 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);

Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);

RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition-firePointPosition,100, whatToHit);


Debug.DrawLine (firePointPosition, (mousePosition-firePointPosition)*100, Color.cyan);

if (hit.collider != null) {

Debug.DrawLine (firePointPosition, hit.point, Color.red);

Enemy enemy = hit.collider.GetComponent<Enemy>();

if (enemy != null) {

audioManager.PlaySound(hitSoundName);

enemy.DamageEnemy (Damage);

Debug.Log ("We hit " + hit.collider.name + " and did " + Damage + " damage.");

}

}


if (Time.time >= timeToSpawnEffect)

{

Vector3 hitPos;

Vector3 hitNormal;


if (hit.collider == null) {

hitPos = (mousePosition - firePointPosition) * 30;

hitNormal = new Vector3(9999, 9999, 9999);

}

else

{

hitPos = hit.point;

hitNormal = hit.normal;

}


Effect(hitPos, hitNormal);

timeToSpawnEffect = Time.time + 1 / effectSpawnRate;

}

audioManager.PlaySound(shotSoundName);

}


  void Effect(Vector3 hitPos, Vector3 hitNormal)

  {

  Transform trail = Instantiate (BulletTrailPrefab, firePoint.position, firePoint.rotation) as Transform;

LineRenderer lr = trail.GetComponent<LineRenderer>();

float size = Random.Range(0.6f, 0.9f);

trail.localScale = new Vector3(size, size, size);

if (lr != null)

{

lr.SetPosition(0, firePoint.position);

lr.SetPosition(1, hitPos);

}


Destroy(trail.gameObject, 0.04f);


if (hitNormal != new Vector3(9999, 9999, 9999))

{

Transform hitParticle = Instantiate(HitPrefab, hitPos, Quaternion.FromToRotation (Vector3.right, hitNormal)) as Transform;

Destroy(hitParticle.gameObject, 1f);

}


    Transform clone = Instantiate (MuzzleFlashPrefab, firePoint.position, firePoint.rotation) as Transform;

clone.parent = firePoint;

clone.localScale = new Vector3 (size, size, size);

Destroy (clone.gameObject, 0.02f);

}

}

Answers

Sign In or Register to comment.