コード例 #1
0
    public override void Update(float deltaTime)
    {
        for (var iterator = _attackPattern.First; iterator != null; iterator = iterator.Next)
        {
            PatternNode pattern = iterator.Value;

            pattern.Update(deltaTime);

            if (pattern.time < 0f)
            {
                pattern.function();
                _attackPattern.Remove(pattern);
            }
        }

        Vector2 perlinValue    = (new Vector2(Mathf.PerlinNoise(time * 0.2f, 0f), Mathf.PerlinNoise(0f, time * 0.2f)) * 2f - Vector2.one) * 8f;
        Vector3 targetPosition = _player.worldPosition + new Vector3(perlinValue.x, 8f + Mathf.Sin(time * 5f), perlinValue.y);

        velocity = Vector3.Lerp(velocity, targetPosition - worldPosition, deltaTime * 24f);

        int holdRuneCount = GetRunesByState(RuneState.Hold).Count;

        for (int i = 0; i < holdRuneCount; i++)
        {
            GetRunesByState(RuneState.Hold)[i]._targetPosition = worldPosition +
                                                                 CustomMath.HorizontalRotate(Vector3.right * 12f, (i * 360f / holdRuneCount) + (time * 120f));
        }

        foreach (var rune in GetRunesByState(RuneState.ReadyDrop))
        {
            rune._targetPosition = world.player.worldPosition + Vector3.up * 6f;
        }

        _entityParts[0].worldPosition = worldPosition;
        _entityParts[1].worldPosition = Vector3.Lerp(_entityParts[1].worldPosition, worldPosition, deltaTime * 10f);

        base.Update(deltaTime);
    }