コード例 #1
0
ファイル: LazerDetector.cs プロジェクト: NikolaNikushev/H.A.T
    private void Update()
    {
        //Move the ray
        goingLeft = GetDirection();

        Debug.DrawRay(gameObject.transform.position, transform.TransformDirection(Vector3.forward) * viewRange);
        Vector3 newPosition = gameObject.transform.localPosition;

        if (goingLeft)
        {
            newPosition.x += Time.deltaTime * POINTER_SPEED;
        }
        else
        {
            newPosition.x -= Time.deltaTime * POINTER_SPEED;
        }

        gameObject.transform.localPosition = newPosition;
        Ray        searchRay = new Ray(gameObject.transform.position, transform.forward);
        RaycastHit hitObject = new RaycastHit();

        if (Physics.Raycast(searchRay, out hitObject, viewRange))
        {
            if (hitObject.transform.name != "Terrain" && hitObject.transform.tag != "wall" &&
                hitObject.transform.tag != "Player" && !hitObject.transform.name.Contains("Shell") &&
                !hitObject.transform.name.Contains("Rocket") && hitObject.transform.tag != "mountain")
            {
                objectFound = hitObject.transform.position;
                if (setPositionData.fakeWaypointsID.Count == 0)
                {
                    currentObjectBeingDodged = new Vector3(0, 0, 0);
                }
                if (currentObjectBeingDodged != objectFound)
                {
                    setPositionData.ResetFakePoints();
                    currentObjectBeingDodged = objectFound;

                    Vector3 currentWaypoint = setPositionData.wayPoints[setPositionData.currentWaypoint];
                    Vector3 newFirstPoint   = GetPoint(hitObject, currentWaypoint, true);
                    Vector3 newSecondPoint  = GetPoint(hitObject, currentWaypoint, false);

                    AddWaypoint(newFirstPoint, false);
                    AddWaypoint(newSecondPoint, true);
                }
            }
        }
    }