예제 #1
0
    public LineHitbox createLineHB(float range, Vector2 aimPoint, Vector2 offset, float damage, float stun, float hitboxDuration,
                                   Vector2 knockback, bool followObj = true, ElementType element = ElementType.PHYSICAL)
    {
        if (m_physics != null)
        {
            aimPoint = m_physics.OrientVectorToDirection(aimPoint);
            offset   = m_physics.OrientVectorToDirection(offset);
        }
        Vector3    newPos = new Vector3(transform.position.x + offset.x, transform.position.y + offset.y, 0);
        GameObject go     = Instantiate(HitboxList.Instance.HitboxLine, newPos, Quaternion.identity) as GameObject;
        LineHitbox line   = go.GetComponent <LineHitbox> ();

        line.setRange(range);
        line.Damage = damage;
        line.setAimPoint(aimPoint);
        line.Duration = hitboxDuration;
        if (m_physics != null)
        {
            line.Knockback = m_physics.OrientVectorToDirection(knockback);
        }
        line.IsFixedKnockback = true;
        line.Creator          = gameObject;
        line.Faction          = Faction;
        line.AddElement(element);
        line.Stun = stun;
        line.Init();

        ExecuteEvents.Execute <ICustomMessageTarget> (gameObject, null, (x, y) => x.OnHitboxCreate(line));
        return(line);
    }
예제 #2
0
    public void getReflected(Vector2 hitPoint)
    {
        float   offsetX = Random.Range(-15, 15) / 100f;
        float   offsetY = Random.Range(-15, 15) / 100f;
        Vector2 realD   = new Vector2(-aimPoint.x + offsetX, -aimPoint.y + offsetY);
        Vector2 realKB  = new Vector2(-Knockback.x, Knockback.y);

        realD = Vector2.ClampMagnitude(realD, 1.0f);

        Vector3    newPos = new Vector3(hitPoint.x - aimPoint.x, hitPoint.y - aimPoint.y, 0);
        GameObject go     = Instantiate(gameObject, newPos, Quaternion.identity) as GameObject;
        LineHitbox line   = go.GetComponent <LineHitbox> ();

        line.setRange(range);
        line.Damage = Damage;
        line.setAimPoint(realD);
        line.Duration         = Duration;
        line.Knockback        = realKB;
        line.IsFixedKnockback = true;
        //line.Faction =
        //line.setFaction (faction);
        line.Creator = gameObject;
        //line.reflect = hitboxReflect;
        line.Stun = Stun;
        //line.mAttr = mAttrs;
    }