- Home /
Question by
Wesley21spelde · Jun 02, 2016 at 10:04 PM ·
raycastpositionnot workingtarget
Raycast not working correct
hey guys my raycast is not working Correct!. in the lateUpdate i tried to Draw a Drawray from the origin position to the target position but that is not going well
using UnityEngine;
using System.Collections;
public class PlasmaBeamWeaponLeft : MonoBehaviour{
public GameObject plasmaBeam;
public float spawnTime = 5f;
//
public Transform target;
private bool CanSeeTarget;
//
private LineRenderer lineRenderer;
private float counter;
public float dist = 5000f;
//
public Transform origin;
//
public float linrDrawSpeed = 6f;
public float damage = 1.0f;
RaycastHit hit;
// Use this for initialization
void Start()
{
InvokeRepeating("SpawnplasmaBeam", spawnTime, spawnTime);
target = GameObject.FindWithTag("Enemy").transform;
lineRenderer = GetComponent<LineRenderer>();
lineRenderer.SetPosition(0, origin.position);
lineRenderer.SetWidth(.45f, 0.2f);
dist = Vector3.Distance(origin.position, target.position);
}
// Update is called once per frame
void OnCollisionEnter(Collision col)
{
col.gameObject.BroadcastMessage("ApplyDamage", damage = 1.0f);
}
void SpawnplasmaBeam()
{
//var newplasmaBeam = GameObject.Instantiate(plasmaBeam);
}
void LateUpdate()
{
target = GameObject.FindWithTag("Enemy").transform;
origin = GameObject.FindWithTag("originL").transform;
if (target != null)
//
lineRenderer = GetComponent<LineRenderer>();
lineRenderer.SetPosition(0, origin.position);
lineRenderer.SetWidth(.45f, 0.2f);
dist = Vector3.Distance(origin.position, target.position);
if (counter < dist)
{
counter += .1f / linrDrawSpeed;
float x = Mathf.Lerp(0, dist, counter);
dist = Vector3.Distance(origin.position, target.position);
lineRenderer.SetPosition(0, origin.position);
Vector3 pointA = origin.position;
Vector3 pointB = target.position;
Vector3 pointAlongLine = x * Vector3.Normalize(pointB - pointA) + pointA;
lineRenderer.SetPosition(1, pointAlongLine);
//Debug RayCast is the Editor - So we can see it!!
Vector3 forward = transform.TransformDirection(Vector3.forward)*dist;
Debug.DrawRay(origin.transform.position,target.transform.position, Color.yellow);
//
if (Physics.Raycast(transform.position,target.transform.position, out hit))
{
hit.transform.SendMessage("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver); //Call the method Apply Damage in the gameobject that is hit
}
}
}
}
Comment
FAQ :
What are the guidelines for writing good questions?
We want Unity Answers to become a comprehensive database of questions and answers related to Unity. When you ask your questions, it can be helpful to keep a few things in $$anonymous$$d:
Be specific. If you want specific answers, ask specific questions. If something "doesn't work", write what exactly it does that is wrong.
Your answer
Follow this Question
Related Questions
A Helping Hand With Raycasting 1 Answer
Camera rotation around player while following. 6 Answers
Look at enemy 1 Answer
Setting the position of linerenderer 1 Answer
Raycast layer problem 1 Answer