Ejemplo n.º 1
0
    public override void InitializeProjectile(SkillUser user)
    {
        anim.Play("Idle", 0, 0);
        //hitCollider.enabled = false;
        meleeDirection = user.userAim.GetGeneralDirection();
        projectileDamageSource.damageValue = (int)(Random.Range(user.userStats.strength.Value - 1, user.userStats.strength.Value + 2) * strengthMultiplier);
        projectileDamageSource.hostileTo   = user.userStats.enemyEntitySets;
        projectileDamageSource.owner       = user.userStats;
        projectileDamageSource.skillType   = SkillType.Melee;
        projectileDamageSource.damageType  = DamageType.Physical;

        if (meleeDirection == GeneralDirection.DOWN)
        {
            projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, -90);
        }
        else if (meleeDirection == GeneralDirection.UP)
        {
            projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, 90);
        }
        else if (meleeDirection == GeneralDirection.RIGHT)
        {
            projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, 0);
        }
        else if (meleeDirection == GeneralDirection.LEFT)
        {
            projectileDamageSource.transform.rotation = Quaternion.Euler(0, 0, 180);
        }

        StartCoroutine(HitRoutine());
    }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if (TestArmorDamage)
        {
            TestArmorDamage = false;
            TestArmor();
        }
        if (dirTarget)
        {
            dirTest = Direction.GetDirection(dirTarget.transform.position, dirTarget.transform, transform.position, transform);
        }
        if (lr.enabled)
        {
            SetPaths();
        }
        mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        if (enginePower == 0)
        {
            enginePower = 1;
        }
        Agent.acceleration = mass / enginePower;
        if (usingTractor)
        {
            Agent.acceleration *= .35f;
        }
        TractorLoop();

        if (!moveAssigned)
        {
            if (Waypoints.Count != 0)
            {
                IssueMovementCommand(Waypoints[0]);
            }
        }
        if (Agent.isActiveAndEnabled)
        {
            if (Agent.remainingDistance <= float.Epsilon && Waypoints.Count != 0)
            {
                Waypoints.Remove(Waypoints [0]);
                Agent.Stop();                  // TODO
                moveAssigned = false;
                SetPaths();
                if (Waypoints.Count != 0)
                {
                    IssueMovementCommand(Waypoints [0]);
                }
            }
        }
    }
Ejemplo n.º 3
0
    //ToDo not quite accurate. Doesnt account for rotation for some reason. Probably an issue in inputs, not the formula itself.

    // update right now its only telling us where the other ship is in world space terms, without adjusting via our own rotation
    public static GeneralDirection GetDirection(Vector3 PositionShotFrom, Transform enemy, Vector3 ourPosition, Transform us)
    {
        GeneralDirection result           = GeneralDirection.None;
        float            shortestDistance = Mathf.Infinity;
        float            distance         = 0;

        Vector3 vectorPosition = ourPosition + PositionShotFrom;

        distance = Mathf.Abs(((ourPosition + us.forward) - PositionShotFrom).magnitude);
        if (distance < shortestDistance)
        {
            shortestDistance = distance;
            result           = GeneralDirection.Forwards;
        }
        distance = Mathf.Abs(((ourPosition - us.forward) - PositionShotFrom).magnitude);
        if (distance < shortestDistance)
        {
            shortestDistance = distance;
            result           = GeneralDirection.Back;
        }
        distance = Mathf.Abs(((ourPosition + Vector3.up) - PositionShotFrom).magnitude);
        if (distance < shortestDistance)
        {
            shortestDistance = distance;
            result           = GeneralDirection.Forwards;   //UP
        }
        distance = Mathf.Abs(((ourPosition + -Vector3.up) - PositionShotFrom).magnitude);
        if (distance < shortestDistance)
        {
            shortestDistance = distance;
            result           = GeneralDirection.Back;   //DOWN
        }
        distance = Mathf.Abs(((ourPosition - us.right) - PositionShotFrom).magnitude);
        if (distance < shortestDistance)
        {
            shortestDistance = distance;
            result           = GeneralDirection.Left;
        }
        distance = Mathf.Abs(((ourPosition + us.right) - PositionShotFrom).magnitude);
        if (distance < shortestDistance)
        {
            shortestDistance = distance;
            result           = GeneralDirection.Right;
        }

        return(result);
    }
Ejemplo n.º 4
0
    public void SpawnDebris(Vector3 source)
    {
        if (dead)
        {
            return;
        }
        foreach (Renderer re in rens)
        {
            re.material.SetColor("_EmissionColor", Color.grey);
        }
        dead = true;
        Vector3 dir = transform.position - source;

        dir = dir.normalized;
        GameObject deb = Instantiate(Debris);

        deb.transform.position = transform.position + dir * .1f;
        Rigidbody r = deb.GetComponent <Rigidbody> ();

        r.AddForce(dir * 125f);
        Explode();
    }