Пример #1
0
    public virtual void CheckForValidTargetInRange(WeaponTargettingArea WeaponTargettingArea, Vector3 forward, int layerMask)
    {
        Player target = WeaponTargettingArea.playertarget;

        // valid player in target area
        if (target != null && WeaponTargettingArea.HasValidTarget())
        {
            if (!target.IsAlive())
            {
                return;
            }
            DrawTracer(Muzzle.transform.position, target.transform.position);
            player.RegisterNewValidHit(player, target, DamageAmount);
            CreateBloodSpray(target.transform.position, transform.rotation);
            //else miss
        }
        else
        {
            Ray ray = new Ray();

            ray.origin    = Muzzle.transform.position;
            ray.direction = transform.forward;

            DrawTracer(Muzzle.transform.position, transform.position + transform.forward * weaponRange);
        }
    }
Пример #2
0
    //public void SetWeapon(AbstractWeapon newWeapon, System.Action<ValidHit> OnValidHit)
    public void SetWeapon(AbstractWeapon newWeapon, WeaponTargettingArea targetArea)
    {
        bool oldWeaponHadTargettingArea = false;

        if (Weapon)
        {
            if (Weapon.aimAssistOn == true)
            {
                WeaponTargettingArea temp = GetComponentInChildren <WeaponTargettingArea>();
                temp.transform.SetParent(null);
                temp.gameObject.SetActive(false);
                oldWeaponHadTargettingArea = true;
            }
            Destroy(Weapon.gameObject);
        }

        canRotate = true;
        canMove   = true;

        //new weapon
        Weapon        = Instantiate(newWeapon, transform);
        Weapon.player = this;

        if (Weapon.aimAssistOn == true)
        {
            targetArea.Initialize(Weapon);
            targetArea.transform.SetParent(Weapon.transform, false);
            targetArea.transform.rotation = Weapon.transform.rotation;
            targetArea.gameObject.SetActive(true);
        }
        else
        {
            if (oldWeaponHadTargettingArea)
            {
                targetArea.gameObject.SetActive(false);
            }
        }

        //Weapon.OnValidHitOccurred = OnValidHit;
        FloatingTextController.CreateFloatingText("+" + Weapon.WeaponName, transform);
    }