Update() public method

public Update ( ) : void
return void
Esempio n. 1
0
    void UpdateBeam(Beam beam)
    {
        var prev = beam.position;

        beam.Update(Time.deltaTime, target.position);
        var cur = beam.position;

        float l    = (cur - prev).magnitude;
        float c    = l * beamParameters.countPerMeter;
        int   ci   = (int)c;
        float frac = c - (float)ci;

        if (UnityEngine.Random.value < frac)
        {
            ci++;
        }
        EmitBeamParticles(beam, ci, prev, cur);
        // ヒット判定
        var diff = beam.position - target.position;

        if (diff.magnitude < 3f)
        {
            targetVelocity += beam.velocity * beamParameters.impact;
            beam.time       = -float.MaxValue;       // ビーム消滅
            Spark(beam.position, beam.velocity, diff.normalized, sparkParameters.sharpness, sparkParameters.particleCount);
        }
    }
Esempio n. 2
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            Beam.Update(gameTime);

            if (Target != null)
            {
                float angleToTarget = Trigonometry.GetAngleOfLineBetweenObjectAndTarget(this, Target.WorldPosition);
                if (Math.Abs(angleToTarget - WorldRotation) <= 0.1f)
                {
                    Fire();
                }
                else
                {
                    firing = false;

                    firingSoundEffectInstance.Pause();
                }
            }
            else
            {
                firing = false;

                firingSoundEffectInstance.Pause();
            }

            if (firing)
            {
                Beam.Opacity = (float)Math.Min(Beam.Opacity + 0.02f, 1);
            }
            else
            {
                Beam.Opacity = (float)Math.Max(Beam.Opacity - 0.05f, 0);
            }

            TargetingLine.Visible = Opacity == 0 ? true : false;
        }