Ejemplo n.º 1
0
    public void Walk(float axis)
    {
        velocity.x = speed.x * axis;

        lastPosition = currPosition;
        currPosition = CharacterCont.GetCharacterPosition();

        if (axis < 0)
        {
            scale     = new Vector2(-1f, 1f);
            direction = Direction.Left;
        }
        else if (axis > 0)
        {
            scale     = new Vector2(1f, 1f);
            direction = Direction.Right;
        }

        world.checkpointManager.Check();

        if (cbOnWalk != null)
        {
            cbOnWalk(this);
        }
    }
Ejemplo n.º 2
0
    void Start()
    {
        Instance = this;

        world = WorldController.Instance.world;

        CreateCharacter();
    }
Ejemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        if (GetComponent <Health>().alive)
        {
            if (!hasSeen)
            {
                int mask = 1 << LayerMask.NameToLayer("Ignore Raycast");
                mask = ~mask;
                RaycastHit hit;
                Vector3    toPlayer = player.transform.position - transform.position;
                Physics.Raycast(transform.position, toPlayer.normalized, out hit, toPlayer.magnitude);
                CharacterCont cc          = player.GetComponent <CharacterCont>();
                float         speed       = cc.currentSpeed;
                float         distance    = Vector3.Distance(transform.position, player.transform.position);
                float         inverseTime = (speed / distance);
                float         angle       = Vector3.Angle(transform.forward, player.transform.position - transform.position);
                if (inverseTime > 1 || (hit.transform && (angle < 45 && hit.transform.tag == "Player") && (hit.transform.GetComponent <CharacterCont>().currentSpeed > .1f || Time.time - spawnTime > 3)))
                {
                    hasSeen          = true;
                    audioSource.clip = spotted;
                    audioSource.Play();
                }
            }
            if (hasSeen)
            {
                if (Vector3.Distance(transform.position, player.transform.position) < (weapon ? ((MeleeWep)weapon).arcRadius : 1))
                {
                    transform.forward = player.transform.position - transform.position;


                    if (weapon && Time.time - lastAttacked > weapon.fireRate)
                    {
                        lastAttacked = Time.time;
                        animator.SetTrigger("AttackWeak");
                        agent.SetDestination(transform.position);
                    }
                }
                else
                {
                    agent.SetDestination(player.transform.position);
                }

                UpdateAnimator();
                prevPos = transform.position;
                prevDir = transform.forward;
            }
        }
        else
        {
            if (GetComponent <Collider>())
            {
                Destroy(GetComponent <Collider>());
                agent.enabled = false;
            }
        }
    }
Ejemplo n.º 4
0
    public bool IsCharacterAtEdge()
    {
        Vector3 characterPos    = CharacterCont.GetCharacterPosition();
        Vector3 leftCameraEdge  = CameraController.GetLeftEdgePosition();
        Vector3 rightCameraEdge = CameraController.GetRightEdgePosition();

        // FIXME: Make constant offsets.
        if (characterPos.x <= leftCameraEdge.x + 2f && direction == Direction.Left ||
            characterPos.x >= rightCameraEdge.x - 2f && direction == Direction.Right
            )
        {
            return(true);
        }

        return(false);
    }
 void Start()
 {
     player = GameObject.FindGameObjectWithTag("Player").GetComponent <CharacterCont>();
 }
 // Use this for initialization
 void Start()
 {
     charCont    = GetComponent <CharacterCont>();
     audioSource = GetComponent <AudioSource>();
 }