- Home /
Raycast only works right next(practically on top of) object
Hello I am sure I am missing something here. I am trying to send out a raycast from my players feet to detect a laying skeleton to animate and move to the next click. For some reason the raycast only works practically on top of the skeleton. Also when the the Skeleton is "Awake" there is no movement. Putting the code for the scripts below. Sorry if the code is messy and am just learning and am sure I am making all kinds of formatting mistakes.
raycast script
using UnityEngine;
using System.Collections;
public class SpellRayCast : MonoBehaviour {
SkeletonController sControl;
public bool skelAwaken = false;
public Vector3 destination;
// Use this for initialization
void Start () {
}
void FixedUpdate () {
RaycastHit hit;
Ray ray = new Ray (transform.position, transform.forward);
Vector3 forward = transform.TransformDirection(Vector3.forward) * 10;
Debug.DrawRay(transform.position, forward, Color.green);
if (Physics.Raycast(ray, out hit, 10) && Input.GetMouseButtonDown(0)){
if (hit.collider.tag == "Skeleton") {
Debug.Log("Hit!");
skelAwaken = true;
if (skelAwaken == true) {
destination = hit.point;
}
}
else{
skelAwaken = false;
}
}
}
public bool giveAwake(bool Res){
Res = skelAwaken;
return Res;
}
}
taarget script
using UnityEngine;
using System.Collections;
public class SkeletonController : MonoBehaviour {
Animation anim;
Animator anima;
bool awaken;
bool woken;
Rigidbody rBody;
SpellRayCast awake;
GameObject spell;
Vector3 dist;
public float speed;
// Use this for initialization
void Start () {
anim = GetComponent<Animation>();
anima = GetComponent<Animator>();
rBody = GetComponent<Rigidbody>();
spell = GameObject.FindGameObjectWithTag("Spell");
speed = speed * Time.deltaTime;
}
// Update is called once per frame
void Update () {
Move();
dist = GameObject.Find("SpellRayCast").GetComponent<SpellRayCast>().destination;
Checkawaken();
if (awaken == true && woken == false) {
anim.Play("Reanimate");
woken = true;
}
}
void Checkawaken(){
awaken = GameObject.Find("SpellRayCast").GetComponent<SpellRayCast>().skelAwaken;
}
void Move(){
if (woken == true && dist != null) {
transform.position = Vector3.MoveTowards(transform.position, dist, speed);
}
}
}
Note: I got the animation to work, Need to find what is wrong with move to point lines. Sure its something simple.
Your answer
Follow this Question
Related Questions
Animation Playback Problem 1 Answer
character animation and movement 1 Answer
Smooth 3D Dodge Roll Animation 0 Answers
Creating an animation with variables? 2 Answers