用vb做一个物体从高空下落的物体游戏

某物体做自由落体运动,下落过程中先后经过ab两点,已知经过b点时速度大小是经过a点速度大小的4/3,且ab两点间的高度差为35m,则经过b点时的速度为vb= m/s,下落的总时间为 s算出来答案是40 1为什么标准答案是40
第一问结果一样,说明你会求了,不多说.其实第二问是对“下落的总时间”理解不一.题目的意思是“从开始下落到b点所用的总时间”,而你的理解是“从a点下落到b点的总时间”.显然a点不是开始下落的点(初速度为0),a点是有速度的.应该是标准答案的理解比较合理. Vb=40m/s=gt,t=4s.
为您推荐:
其他类似问题
扫描下载二维码最新推荐活动
轻松一刻 |
请选择品牌
请选择车系
双色球 每注2元,可中1500万请选择研究方向
制药工程、有机化学、高分子化学与物理
制药工程、有机化学
有机化学实验
有机化学、应用化学
有机化学、精细化工
有机化学,高分子化学与物理
有机化学 应用化学
有机化学 分析化学 应用化学 制药工程
有机高分子能源材料
应用化学、有机化学
应用化学、无机化学、生物化工
应用化学、无机化学
应用化学、工业催化
应用化学、分析化学
应用化学,有机化学
应用化学 有机化学
应用化学 无机化学
冶金物理化学、物理化学、化学工程
冶金物理化学
冶金物化、物理化学
物理化学、冶金物理化学
物理化学、工业催化
物理化学,冶金物理化学
无机化学、应用化学
无机化学,药理学
生物学/环境科学
生物化工、制药工程
生物化工、应用化学、有机化学、制药工程
生化分子生物
能源材料化学及电化学
金属有机化学、无机合成、应用催化
环境化学/科学/工程
化学计量学
化学工艺、化学工程、生物化工
化学工艺、化学工程
化学工艺,化学工程
化学工艺,工业催化
化学工程与技术
化学工程与工艺
化学工程、化学工艺、工业催化
化学工程、高分子科学
化学工程 冶金物理化
化学工程 分析化学
管理科学与工程
功能高分子材料
分析化学、有机化学
分析化学、应用化学
分析化学,无机化学,应用化学
分析化学,生物化工
wujihuaxue
请选择职称
助理研究员
高级工程师
高级实验师
分析科学系
化学工程系
有机与高分子化学系
无机化学系
冶金及应用物理化学系
应用化学系
制药工程系
友情链接:&&&&&&&&&&&用VB和TV3D轻松制作3D游戏教程4&天空与大气
第4章 天空与大气系统
直到现在为止,我们的背景都是黑色的,很难看。
但是我一直觉得,我们游戏制作者在我们的游戏里面就是真正的上帝。我们说要有光,光就出现了;我们说要有天空,天空就出现;我们说要有山有水,山水就出现了;我们说还要有人,人就出现了,结果人的AI这个模块出了Bug,不能让人类出现在伊甸园这个地图中,至于后来的事,大家都知道了——
没错,上帝从某种意义上来讲,就是个程序员。
好,这一章我们就来学习,造天。
在3d游戏中,主要就是天空盒和天空球两种,而且摄像机就在其中。天空球更真实些,类似而球幕影院,而且可以让这个球根据时间不停旋转体现出昼夜的变化,但是贴图的绘制较麻烦。如果有美工支持的可以尝试,和天空盒原理差不多,不多做讲解,这里主要讲天空盒。
天空盒原理简单,而且素材很多,网上一找一大堆,而且效果很好。
首先准备天空盒的贴图,6张图片放入程序目录。
Right.jpg&
先添加大气系统:
Dim Atmos& As New
TVAtmosphere '添加大气系统
读取图片:
& TF.LoadTexture
"Back.jpg", "SKYBOX_Back" '读取天空背景
TF.LoadTexture "Front.jpg", "SKYBOX_Front"
TF.LoadTexture "Left.jpg", "SKYBOX_Left"
TF.LoadTexture "Right.jpg", "SKYBOX_Right"
TF.LoadTexture "Up.jpg", "SKYBOX_Up"
TF.LoadTexture "down.jpg", "SKYBOX_DOWN"
& Atmos.SkyBox_Enable
True '开启天空盒
Atmos.SkyBox_SetTexture GetTex("SKYBOX_Front"),
GetTex("SKYBOX_Back"), GetTex("SKYBOX_Left"),
GetTex("SKYBOX_Right"), GetTex("SKYBOX_Up"), GetTex("SKYBOX_DOWN")
'设定贴图然后在渲染的位置加上就可以了:
& Atmos.Atmosphere_Render
'渲染大气运行一下试试:
我们还可以加点迷雾效果代码如下:
Atmos.Fog_Enable&True
Atmos.Fog_SetColor 1, 0, 0&&
'颜色RGBA,例如红
Atmos.Fog_SetParameters 1, 20,
0&&&&&&&&&&&&&
'最近距离,最远距离,浓度
Atmos.Fog_SetType TV_FOG_LINEAR,
TV_FOGTYPE_PIXEL&&
如果让雾不影响天空,可以在渲染天空时时把雾关掉。
动态云得代码如下,没什么用,有兴趣的可以研究下。
&'///////////建立云
&& Atmos.Clouds_Enable True
Atmos.Clouds_Create 1, 200, 200'云层数,范围
Atmos.Clouds_SetLayerParameters 0,& 200,
GetTex("clouds"), 3, 3’设置高度,贴图等
Atmos.Clouds_SetLayerAnimation 0, True, 0.01,
0.01'设定移动速度
全部代码如下:
Option Explicit
Dim Tv As New TVEngine
'调用tv3d所必需的
Dim Scene As New TVScene
'调用tv3d所必需的
Dim Mesh As TVMesh '添加一个网格物体
Dim Inp As New TVInputEngine
Dim TF As New TVTextureFactory
'添加一个贴图库
Dim MF As New TVMaterialFactory ''添加一个材质库
Dim LE As New TVLightEngine '添加一个灯光库
Dim Mx As Long, My As Long, B1 As Boolean,
B2 As Boolean, Roll As Long&&
'接收鼠标信息
Dim Camera As New TVCamera
'定义一个摄像机,相当于人的眼睛
Dim CameraPozX As Single, CameraPozY As Single, CameraPozZ As
Single '摄像机位置坐标
Dim CameraAngX As Single, CameraAngY As Single '摄像机角度
Dim Floor As TVMesh '添加一个网格物体
Dim Atmos& As New TVAtmosphere '添加大气系统
Private Sub Form_Load()
Me.Show '显示当前窗口,每次都加上错不了
Tv.SetSearchDirectory App.Path '设定贴图读取目录为当前目录
&Tv.SetVSync True '垂直同步开关
Tv.Init3DWindowed Form1.hWnd '用窗口模式启动tv3d
Inp.Initialize
Tv.SetAngleSystem TV_ANGLE_DEGREE
TF.LoadTexture "pic.jpg", "pic"
'读取名为pic.jpg的贴图,并命名为pic
TF.LoadTexture "Back.jpg", "SKYBOX_Back" '读取天空背景
TF.LoadTexture "Front.jpg", "SKYBOX_Front"
TF.LoadTexture "Left.jpg", "SKYBOX_Left"
TF.LoadTexture "Right.jpg", "SKYBOX_Right"
TF.LoadTexture "Up.jpg", "SKYBOX_Up"
TF.LoadTexture "down.jpg", "SKYBOX_DOWN"
& Atmos.SkyBox_Enable
True '开启天空盒
Atmos.SkyBox_SetTexture GetTex("SKYBOX_Front"),
GetTex("SKYBOX_Back"), GetTex("SKYBOX_Left"),
GetTex("SKYBOX_Right"), GetTex("SKYBOX_Up"), GetTex("SKYBOX_DOWN")
Atmos.Fog_Enable True& '开启雾
Atmos.Fog_SetColor 1, 0, 0&&
'颜色RGBA,例如红
Atmos.Fog_SetParameters 1, 20,
0&&&&&&&&&&&&&
'最近距离,最远距离,浓度
Atmos.Fog_SetType TV_FOG_LINEAR,
TV_FOGTYPE_PIXEL&& '雾的类型
MF.CreateMaterial "solid" '建立名为solid的材质
MF.SetAmbient GetMat("solid"), 0, 0, 0,
MF.SetDiffuse GetMat("solid"), 1, 1, 1, 1 '扩散光,即物体的固有颜色
MF.SetEmissive GetMat("solid"), 0, 0, 0, 1&
MF.SetOpacity GetMat("solid"), 1 '不透明度
MF.SetSpecular GetMat("solid"), 1, 1, 1,
1&& '高光色
MF.SetPower GetMat("solid"), 60 '散射强度
LE.CreateDirectionalLight Vector(1, -1,
1), 1, 1, 1, , 1& '添加一个平行光
&LE.SetSpecularLighting
True '高光开关
&Set Floor = Scene.CreateMeshBuilder
'网格物体初始化,必加
Floor.AddFloor 0, -10, -10, 10, 10, -1
Set Mesh = Scene.CreateMeshBuilder
'网格物体初始化,必加
Mesh.CreateSphere 1&&
'建立一个半径为1的球
Mesh.SetTexture GetTex("pic") '赋予物体pic贴图
Mesh.SetPosition 0, 0, 3 '设定物体的位置坐标
Mesh.SetMaterial GetMat("solid") '赋予物体solid材质
Mesh.SetLightingMode
TV_LIGHTING_NORMAL&&&
'这个最常用的灯光模式
&Do '主循环
& Inp.GetMouseState Mx, My, B1, B2, , ,
Roll&&&&&&&&&&
'接收鼠标信息
&&& CameraAngX =
CameraAngX - 0.1 * Mx
&&& CameraAngY =
CameraAngY - 0.1 * My
&&& '限制范围
If CameraAngY & 90 Then CameraAngY = 90
If CameraAngY & -90 Then CameraAngY = -90
Inp.IsKeyPressed(TV_KEY_Q) Then CameraPozY = CameraPozY + 0.1
Inp.IsKeyPressed(TV_KEY_E) Then CameraPozY = CameraPozY - 0.1
Inp.IsKeyPressed(TV_KEY_W) Then CameraPozZ = CameraPozZ + 0.1
Inp.IsKeyPressed(TV_KEY_S) Then CameraPozZ = CameraPozZ - 0.1
Inp.IsKeyPressed(TV_KEY_A) Then CameraPozX = CameraPozX + 0.1
Inp.IsKeyPressed(TV_KEY_D) Then CameraPozX = CameraPozX - 0.1
'设定摄像机
Camera.SetRotation CameraAngY, CameraAngX, 0
Camera.SetPosition CameraPozX, CameraPozY, CameraPozZ
&Mesh.RotateY 0.5
'沿y轴以0.5°每帧的速度转动
&Tv.Clear '清屏
Atmos.Fog_Enable False
& Atmos.Atmosphere_Render '渲染大气
&Atmos.Fog_Enable True
&Mesh.Render '渲染球体
&Floor.Render
&Tv.RenderToScreen
'把所得最终结果渲染到屏幕
'这句是把线程空出来,使其他的的程序能运行,必加
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 物体在水中的下落速度 的文章

 

随机推荐