粒子特效 代码(龙卷风)

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <title>粒子漩涡特效</title>

    <style>

        html,

        body {

            margin: 0px;

            width: 100%;

            height: 100%;

            overflow: hidden;

            background: #000;

        }

        #canvas {

            position: absolute;

            width: 100%;

            height: 100%;

        }

    </style>

</head>

<body>

    <canvas id="canvas"></canvas>

    <script>

        function project3D(x, y, z, vars) {

            var p, d;

            x -= vars.camX;

            y -= vars.camY - 8;

            z -= vars.camZ;

            p = Math.atan2(x, z);

            d = Math.sqrt(x * x + z * z);

            x = Math.sin(p - vars.yaw) * d;

            z = Math.cos(p - vars.yaw) * d;

            p = Math.atan2(y, z);

            d = Math.sqrt(y * y + z * z);

            y = Math.sin(p - vars.pitch) * d;

            z = Math.cos(p - vars.pitch) * d;

            var rx1 = -1000;

            var ry1 = 1;

            var rx2 = 1000;

            var ry2 = 1;

            var rx3 = 0;

            var ry3 = 0;

            var rx4 = x;

            var ry4 = z;

            var uc = (ry4 - ry3) * (rx2 - rx1) - (rx4 - rx3) * (ry2 - ry1);

            var ua = ((rx4 - rx3) * (ry1 - ry3) - (ry4 - ry3) * (rx1 - rx3)) / uc;

            var ub = ((rx2 - rx1) * (ry1 - ry3) - (ry2 - ry1) * (rx1 - rx3)) / uc;

            if (!z) z = 0.000000001;

            if (ua > 0 && ua < 1 && ub > 0 && ub < 1) {

                return {

                    x: vars.cx + (rx1 + ua * (rx2 - rx1)) * vars.scale,

                    y: vars.cy + y / z * vars.scale,

                    d: (x * x + y * y + z * z)

                };

            } else {

                return { d: -1 };

            }

        }

        function elevation(x, y, z) {

           

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的 Python 龙卷风粒子特效代码示例: ```python import pygame import random # 初始化 Pygame pygame.init() # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) GRAY = (128, 128, 128) GREEN = (0, 255, 0) # 设定屏幕大小 SCREEN_WIDTH = 600 SCREEN_HEIGHT = 400 screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Tornado Particle Effect") # 创建一个粒子类 class Particle(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface([5, 5]) self.image.fill(WHITE) self.rect = self.image.get_rect() self.rect.x = SCREEN_WIDTH / 2 self.rect.y = SCREEN_HEIGHT / 2 self.angle = random.randint(0, 360) self.distance = random.randint(50, 200) self.speed = random.randint(1, 3) self.size = random.randint(1, 5) def update(self): # 计算新的位置 radians = self.angle * math.pi / 180 self.rect.x = SCREEN_WIDTH / 2 + math.cos(radians) * self.distance self.rect.y = SCREEN_HEIGHT / 2 + math.sin(radians) * self.distance # 更新角度和距离 self.angle += random.randint(-10, 10) self.distance -= random.randint(1, 2) # 调整速度和大小 self.speed -= 0.05 if self.speed < 0: self.speed = 0 self.size -= 0.05 if self.size < 0: self.size = 0 # 调整颜色 self.image.set_alpha(int(self.speed * 255)) self.image = pygame.transform.scale(self.image, [int(self.size), int(self.size)]) # 创建一个粒子组 particle_group = pygame.sprite.Group() # 主循环 done = False clock = pygame.time.Clock() while not done: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # 创建新的粒子并添加到组中 new_particle = Particle() particle_group.add(new_particle) # 更新所有粒子的位置、速度和大小 particle_group.update() # 绘制所有粒子 screen.fill(BLACK) particle_group.draw(screen) # 更新屏幕 pygame.display.flip() # 控制帧率 clock.tick(60) # 退出 Pygame pygame.quit() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵爱吃烤串

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值