python使用panda3d制作飞行模拟器

您所在的位置:网站首页 python做一个三国战争模拟器的游戏 python使用panda3d制作飞行模拟器

python使用panda3d制作飞行模拟器

2023-12-01 09:41| 来源: 网络整理| 查看: 265

00:目录 01:介绍02:资源02.01:准备02.02:参考 03:上代码04:效果05:尾声05.01:对于网友05.02:对于列位转发爱好者05.03:最后

01:介绍

一天,小编没事干,想做一个游戏,于是参考了大量内容,制作了这个飞行模拟器。

02:资源 02.01:准备

1、python python IDLE (3.7 32-bit) 其他版本没有太大影响

2、panda3d(python库) pip安装方法

pip3 install panda3d 02.02:参考

1、panda3d panda3d官网 谷歌翻译

2、三角学 大学数学-平面三角学.pdf

03:上代码 from math import pi, sin, cos from direct.showbase.ShowBase import ShowBase from direct.showbase import DirectObject from direct.task import Task from direct.actor.Actor import Actor from direct.interval.IntervalGlobal import Sequence from panda3d.core import * from direct.gui.DirectGui import * from direct.gui.OnscreenText import OnscreenText from direct.gui.OnscreenImage import OnscreenImage class MyApp(ShowBase): def __init__(self): ShowBase.__init__(self) # 禁用鼠标 self.disableMouse() #隐藏鼠标 props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) #设定摄像机初始位置 self.camera.setPos(0,0,100) # 载入环境模型 self.environ = self.loader.loadModel("models/environment") # 设置环境模型的父实例 self.environ.reparentTo(self.render) # 对模型进行比例及位置调整 self.environ.setScale(0.25, 0.25, 0.25) self.environ.setPos(-8, 42, 0) # 通知任务管理器调用SpinCameraTask控制相机 self.taskMgr.add(self.spinCameraTask, "SpinCameraTask") # 载入熊猫角色 self.pandaActor = Actor("models/panda-model", {"walk": "models/panda-walk4"}) self.pandaActor.setScale(0.005, 0.005, 0.005) self.pandaActor.reparentTo(self.render) # 动画循环 self.pandaActor.loop("walk") # 创建四幕 PosInterval1 = self.pandaActor.posInterval(13, Point3(0, -10, 0), startPos=Point3(0, 10, 0)) PosInterval2 = self.pandaActor.posInterval(13, Point3(0, 10, 0), startPos=Point3(0, -10, 0)) HprInterval1 = self.pandaActor.hprInterval(3, Point3(180, 0, 0), startHpr=Point3(0, 0, 0)) HprInterval2 = self.pandaActor.hprInterval(3, Point3(0, 0, 0), startHpr=Point3(180, 0, 0)) # 创建情节并运行四幕2 self.pandaPace = Sequence(PosInterval1, HprInterval1, PosInterval2, HprInterval2, name="pandaPace") self.pandaPace.loop() #创建HUD global X1,X2,text,text2,L1,L2l,L2r text=OnscreenText(fg=(255,255,0,255),pos=(-0.1,-0.1),scale=0.1,mayChange=True) text2=OnscreenText(pos=(-0.7,0),scale=0.1,mayChange=True) DirectFrame(frameColor=(255,255,0,255),frameSize=(-0.04,0.04,-0.002,0.002),pos=(0,0,0)) DirectFrame(frameColor=(255,255,0,255),frameSize=(-0.002,0.002,-0.04,0.04),pos=(0,0,0)) X1=DirectFrame(frameColor=(0,0,0,255),frameSize=(-0.04,0.04,-0.002,0.002),pos=(0,0,0)) X2=DirectFrame(frameColor=(0,0,0,255),frameSize=(-0.002,0.002,-0.04,0.04),pos=(0,0,0)) DirectFrame(frameColor=(255,255,0,255),frameSize=(-0.5,-0.51,0.5,-0.5),pos=(0,0,0)) L1=DirectFrame(frameColor=(255,255,0,255),frameSize=(0.2,0.11,0.005,-0.005),pos=(0,0,0)) L2l=DirectFrame(frameColor=(255,255,0,255),frameSize=(-0.1,-0.04,0.002,-0.002),pos=(0,0,0)) L2r=DirectFrame(frameColor=(255,255,0,255),frameSize=(0.04,0.1,0.002,-0.002),pos=(0,0,0)) DirectFrame(frameColor=(255,255,0,255),frameSize=(-0.1,0.1,0.002,-0.002),pos=(0,0,0.5)) DirectFrame(frameColor=(255,255,0,255),frameSize=(-0.1,0.1,0.002,-0.002),pos=(0,0,-0.5)) # 定义旋转相机 def spinCameraTask(self, task): (mouse,size)=(base.win.getPointer(0),self.get_size()) (mx0,my0)=(size[0]-mouse.getX(),mouse.getY()) (mx,my,hpr)=(mx0/160,my0/160,self.camera.getHpr()) (rx,ry)=(mx-size[0]/320+hpr[0],my-size[1]/320+hpr[1]) pos=self.camera.getPos() (lx,ly,lz)=(pos[0],pos[1],pos[2]) (angle,angle2)=(hpr[0],hpr[1]) distance=0.2 if angle


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3