pygame伪3d 实现地面效果

这篇具有很好参考价值的文章主要介绍了pygame伪3d 实现地面效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

教程来自What is Mode 7? Let’s code it!
油管镜像pygame伪3d 实现地面效果,pygame,3d,python文章来源地址https://www.toymoban.com/news/detail-537705.html

import cv2
import pygame
import sys
from pygame import gfxdraw
import numpy as np

(width, height) = (800, 600)
pygame.init()
screen = pygame.display.set_mode((width, height))
image = pygame.image.load("11.jpg").convert()
d3=pygame.surfarray.array3d(image)
f=250#数字大会显示更前面的图片
sc=300#数字越大视角越高
color=(255, 255, 255)
#print(len(d3[0][0]))#len(d3 )就是有多少张表 一个[0]是有多高 两个是每个表有几列 三个就是具体数
#print(d3[0][0][0])
#print(d3)
#sarray=pygame.surfarray.array3d(pygame.surface((50,50)))
sarray=pygame.surfarray.array3d(pygame.Surface((width,height)))
#sarray[:]=(255,255,0)变成黄色,替换所有为(255,255,0)

tsize=image.get_size()#图片宽高
print(tsize)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            mouse = pygame.mouse.get_pos()
            '''pxarray = pygame.PixelArray(screensurf)
            pixel = pygame.Color(pxarray[mouse[0], mouse[1]])#获取像素
            print (pixel)
            print (screensurf.get_at(mouse))#颜色
            print(mouse[0], mouse[1],mouse)#点击坐标
            print(img.get_at(mouse))#颜色'''
            #pygame.Surface.set_at(screen, (140, 140), (img.get_at(mouse)))
            print(mouse[0], mouse[1], mouse)  # 点击坐标
    for i in range(width):
        for j in range(int(height/2),height):
            x=(width/2)-i
            y=j+f
            z=j-(height/2)+0.01
            '''
            def huizhi(x, y, z):
            shiju = 300
            x1 = shiju * x / z
            y1 = shiju * y / z
            # p.append((x1,y1))
            return x1, y1
            '''
            px=x/z*sc
            py=y/z*sc

            fp=int(px%tsize[0]),int(py%tsize[1])#tsize【0】,【1】是图片宽高
            fc=d3[fp]
            sarray[i,j]=fc
    pygame.surfarray.blit_array(screen,sarray)
    pygame.display.update()


到了这里,关于pygame伪3d 实现地面效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pygame里实现导弹追踪效果,同时对python的指针机制有一点点思考

           最近,儿子一直缠着让我把之前给他编写的游戏重做一下,要加一些功能.但是因为之前写代码的时候刚学会python,当时的想法就是能跑就行,现在回头看来,代码的可维护性几乎为零.所以没办法只能冲头再来,重构了几乎所有代码.在编写的时候遇到了一个有意思的问题,儿子

    2024年01月21日
    浏览(162)
  • python基于pygame库实现弹幕效果(多行显示,速度不同,颜色不同,循环显示)

            使用python实现类似弹幕的显示效果,弹幕文本存储在txt文件中,弹幕多行显示,弹幕颜色不同有区别,弹幕的速度不一,弹幕要循环显示。      弹幕文本数据:danmu.txt

    2024年02月08日
    浏览(42)
  • Unity地面交互效果——4、制作地面凹陷轨迹

    回到目录 Unity曲面细分制作雪地效果   大家好,我是阿赵。   上一篇介绍了曲面细分着色器的基本用法和思路,这一篇在曲面细分的基础上,制作地面凹陷的轨迹效果。   这次需要达到的效果是这样的:   从效果上看,这个凹陷在地面下的轨迹,里面有法线变化的

    2024年02月04日
    浏览(40)
  • Unity制作下雨中的地面效果

    Unity引擎制作下雨效果   大家好,我是阿赵。   之前介绍了Unity引擎里面通过UV偏移做序列帧动画的做法,这里再介绍一个进阶的用法,模拟地面下雨的雨点效果。   最基本的原理,还是基于这个序列帧动画的做法。不过这里做一点改变。我不再用网格的UV作为计算的

    2024年02月10日
    浏览(30)
  • Unity地面交互效果——3、曲面细分基础知识

    回到目录   大家好,我是阿赵。   之前介绍了使用动态法线贴图混合的方式模拟轨迹的凹凸感,这次来讲一下更真实的凹凸感制作。不过在说这个内容之前,这一篇先要介绍一下曲面细分着色器(Tessellation Shader)的用法。   之前通过法线贴图模拟了凹凸的感觉:   法

    2024年02月05日
    浏览(42)
  • Unity地面交互效果——1、局部UV采样和混合轨迹

    回到目录   大家好,我是阿赵。   这期开始,打算介绍一下地面交互的一些做法。 比如: Unity引擎制作沙地实时凹陷网格的脚印效果 或者: Unity引擎制作雪地效果   这些效果的实现,需要基于一些基础的知识。所以这一篇先介绍一下简单的局部UV采样,然后映射纹理

    2024年02月06日
    浏览(34)
  • 【Unity3D】地面网格特效

    1 前言         本文实现了地面网格特效,包含以下两种模式: 实时模式:网格线宽度和间距随相机的高度实时变化; 分段模式:将相机高度分段,网格线宽度和间距在每段中对应一个值。         本文完整资源见→Unity3D地面网格特效。  2 地面网格实现          Sc

    2024年02月16日
    浏览(32)
  • Canvas实现3D效果

    3D 球 效果图 代码 参考链接 https://tool.4xseo.com/a/2285.html

    2024年02月09日
    浏览(21)
  • css 实现3D效果

    主要用到两个属性:transform-style属性和animation属性 transform-style是用来开启3D效果的属性,而animation是用来让元素实现3D的动画效果 我们以制作一个3D的立方体为例。 transform详细属性,animation详细属性 先把html部分写出来,我们需要把立方体的6个面都先表示出来。 上面分别把

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包