TORQUE引擎核心类SIMOBJECT.docx
- 文档编号:5618141
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:23
- 大小:105.57KB
TORQUE引擎核心类SIMOBJECT.docx
《TORQUE引擎核心类SIMOBJECT.docx》由会员分享,可在线阅读,更多相关《TORQUE引擎核心类SIMOBJECT.docx(23页珍藏版)》请在冰豆网上搜索。
TORQUE引擎核心类SIMOBJECT
第一部分:
脚本入门
************************
1)打开控制台(console)
运行torquedemo.exe进入主界面或游戏后,按~键(不用按shift,其实是`键)激活控制台是一个调试程序的好地方。
2)试一下最简单命令echo()
在控制台键入echo("hello!
");(注意必须加;就象c++一样)可以看到console窗口就立即显示hello!
别小看echo(),有时为了调试脚本程序,在适当的地方加入echo(),显示有关变量的值,可以监测程序是否正确。
使用echo()时,如要输入多行语句,只须连续输入即可,torque会根据;来分行执行如:
$a=1;echo($a);输出:
1
3)torque的脚本script的特点:
a)无须预定义,即开即用。
b)变量类型灵活性,如"12"与12是一样的c)变理大小写不敏感,%a与%A是一样的d)与c++类似,每个语名均须以;作为结束标记
4)变量,torque脚本中,$表示全局变量,%表示局部变量表示法:
$a为全局变量a(在网络中,全局变量只表示在本客户端的全局变量,并不是整个网络)%b为局部变量b(一般用于function中)
变量类型:
a)数字型1234(整数interger)1.234(浮点数floationpoint)1234e-3(科学记数scientificnotation
b)字符型"abcd"(字符串string)'abcd'(标记字符串taggedstring)
再试一下一个有意思的语句:
echo("1"+"2");会输出:
3而不是把2个字符串连接,连接是用@来操作,如:
echo("1"@"2");输出:
12这就是torque的script脚本的灵活之处,更多的字符连接符:
@连接两个字符串TAB两个字符串间加入tabSPC两个字符串间加入一个空格NL两个字符串间加入一个加车(换行)注意:
这些操作符的英文必须是大写。
如:
echo("abcd"NL"CDEF");会输出:
abcdCDEF
较常用的是字符的颜色处理:
原则上是对后面的字符产生影响,直到一个新的字体色操作符出现,但只对当前行字符产生影响,并不会影响默认字体色。
echo("\c2hello!
\c0hello!
");前一个hello!
会显示红色,后一个hello!
会显示正常的黑色。
C)逻辑型:
与其它语言一样,torque也只有两个值true
(1)false(0)
d)数组(arrays)表示法:
$AA[n]一维数组$AA[M,N]多维数组$AA[M_N]多维数组的另一种表示法,变量与数组的名字可以相同,但值并不会产和影响:
$a=2;$a[0]=3;更有趣的是,torque脚本中,数组可以用如下方法指向:
接着上例,你试试:
echo($a0);输出的是$a[0]的值,同理,如果要输出$a[0,0],可以用如下方法:
echo($a0_0);再次可见,torque的脚本是具有相当的灵活性。
d)矢量(vectors):
格式如:
"1.01.01.01.0"矢量是引擎中一个应用很广的变量类型,在3D坐标,动力,粒子,声效等等都有相应的应用。
5)操作符,这方面与C++很相似
6)控制语句,与c++的基本相同
7)功能模块function
function功能模块名([参数0],...,[参数n])
{
语句;
[return返回值;]可选
}
8)物体定义,介绍了一些基本的知识,这里开始进入torque特有的语法了。
在torque中,所有项目都是“物体”,并且所有游戏中的物体都可以访问,如人物,汽车,场景中的物体。
且都可以用脚本进行访问,而物体的属性是在引擎中定义的。
我们看一个脚本中的代码(节选自server\scripts\player.cs)
datablockPlayerData(PlayerBody)
{
renderFirstPerson=false;
emap=true;
className=Armor;
shapeFile="~/data/shapes/player/player.dts";
cameraMaxDist=3;
computeCRC=true;
canObserve=true;
cmdCategory="Clients";
cameraDefaultFov=90.0;
cameraMinFov=5.0;
cameraMaxFov=120.0;
debrisShapeName="~/data/shapes/player/debris_player.dts";
debris=playerDebris;
...
};
datablock的作用是定义物体的有关属性。
这里就是定义了游戏人的人物的有关属性,包括视角定义,3D文件(dts),等等,
再在server\scripts\game.cs中载入:
...
exec("./crossbow.cs");
exec("./player.cs");//载入player.cs中定义的物体
exec("./chimneyfire.cs");
exec("./aiPlayer.cs");
...
载入只是预载入内存,并未真正创建,现在看一下在哪里创建了人物player
在game.cs中,可找到有关功能模块:
functionGameConnection:
:
createPlayer(%this,%spawnPoint)
{
if(%this.player>0){
//Theclientshouldnothaveaplayercurrently
//assigned.Assigninganewonecouldresultin
//aplayerghost.
error("Attemptingtocreateanangusghost!
");
}
//Createtheplayerobject就是这里创建了player这个物体,并返回名柄给%player
%player=newPlayer(){
dataBlock=PlayerBody;
client=%this;
};
MissionCleanup.add(%player);//在场景中加入
//Playersetup...
%player.setTransform(%spawnPoint);//设定随机出现的地点,地点在场景编辑器中定义,并在functionpickSpawnPoint()功能中产生随机点
%player.setShapeName(%this.name);
//Startingequipment
%player.setInventory(Crossbow,1);//初始时的武器设置
%player.setInventory(CrossbowAmmo,10);//初始时的弹药设置
%player.mountImage(CrossbowImage,0);//设置武器在人物的装配点0表示mount0,1表示装在mount1,由此类推。
//Updatethecameratostartwiththeplayer
%this.camera.setTransform(%player.getEyeTransform());//设置视角方式
//Givetheclientcontroloftheplayer//把控制交给player这个物体
%this.player=%player;
%this.setControlObject(%player);
}
总结一下,创建物体objcect的方法是:
%ver=new物体类型(名称)%ver是返回的句柄,是一个整数,是游戏中的客户端唯一值,相当于物体ID。
{
datablock=datablock定义;\\这是必须的,datablock可以是自定义的,或是torque已含有的,可参看torque的datablock附表。
内置属性1=初始化值1;\\可选,不选则取默认值
内置属性2=初始化值2;
...
自定义属性1=初始化值1;\\可选,自定义属性只能在script中应用,并不影响引擎的内置属性
自定义属性2=初始化值2;
...
};\\这个;不可少.
注:
返回的句柄在客户端是唯一值,但网络下的ID又不同,所以一个物体存在2个ID,一个是本地ID,一个是网络ID,网络ID是
整个游戏网络中唯一的ID号,进行网络游戏编程时应注意,关于网络ID的获得方法,以后再作说明。
Torque引擎系列之Gui编辑器
一、Gui编辑器概述:
1、进入游戏后按F10快捷键即进入Gui编辑器。
其界面如下图所示:
2、GUIEditor由4个部分组成:
ContentEditor(内容编辑器)、ControlTree(控件树)、ControlInsepctor(控件检验器)和ToolBar(工具栏)组成。
ContentEditor(内容编辑器)为上图中左上方较大的矩形区域,这是放置、移动、和变换控件的地方。
ControlTree(控件树)位于上图中的右上方,它显示了当前内容控件的层次结构。
Insepctor(控件检验器)是显示所选控件属性的地方,位于GuiEditor的右下角。
ToolBar(工具栏)用于创建、对齐和保存所编辑的控件及Gui。
3、控件属性:
TorqueGui中所有控件的属性都包括下面几类:
SimBase、Parent、ToolTip、l18N、DynamicFields。
除了上述几类共有的属性类外,还有控件本身自带的属性类。
例如GuiWindowsCtrl控件的Generl属性类、GuibuttonCtrl控件的misc属性类。
Parent属性其实就是GuiControl控件的属性,GuiControl类是所有控件的基类,SimBase是GuiControl类的基类,所以每种控件都会继承上述两种基类的属性。
SimBasl一栏中的属性一般都使用默认值。
Parent属性类的属性说明如下:
Profile="GuiDefaultProfile";//外形
HorizSizing="right";//水平对齐方式
VertSizing="bottom";//垂直对齐方式
position="00";//控件左上角顶点坐标
Extent="800600";//控件大小
Visible="1";//是否可见
Bitmap="";//位图
autoSize=true;//自动大小
maxLength=255;//最大长度
resizeWidth=false;//是否可以调整宽度
resizeHeight=false;//是否可以调整高度
Command="quit();";//点击执行命令
Accelerator="escape";//快捷键
ToolTip类属性说明如下:
(用于当用户鼠标悬停在控件上时,显示当前选项的提示条)
Tooltipprofile="GuiToolTipProfile";//外形,用于设置字体大小、颜色等外观
tooltip="Adjustbasicvideo,soundandotheroptions";//提示语字符串
hoverTime=1000;//这个属性一般使用默认值(1000)。
4、Profile参数说明:
Profile的主要功能是为GUI提供规则模版,其中定义了界面的字体、字色、是否透明、填充颜色、位图信息、对齐方式、声音(按钮控件)等。
tab=false;//是否可以使用tab键
canKeyFocus=false;//能成为键焦点
hasBitmapArray=false;//是否是位图数组
mouseOverSelected=false;//是否可以是鼠标结束选择
opaque=false;//是否透明
fillColor="240240240";//填充颜色
fillColorHL="150180200";//高亮填充色
fillColorNA="150210210";//notactive填充色
border=false;//是否有边界
borderColor="000";//边界颜色
borderColorHL="17913494";//高亮填充色
borderColorNA="1267937";//notactive填充色
bevelColorHL="255255255";//斜面高亮时颜色
bevelColorLL="000";//斜面低亮时颜色
fontType="宋体";//字体类型
fontSize=12;//字体大小
fontCharset="GB2312";//字体编码
fontColor="000";//文本正常状态下颜色
fontColorHL="32100100";//文本高亮状态下颜色
fontColorNA="000";//文本notactive状态下颜色
fontColorSEL="00200";//文本选中状态下颜色
bitmap="~/client/ui/bitmaps/roots/Window";//位图信息
textOffset="00";//文本偏移值
modal=true;//是否为模式状态
autoSizeWidth=false;//是否自动调整宽度
autoSizeHeight=false;//是否自动调整高度
numbersOnly=false;//是否只为数字(用于文本编辑框)
cursorColor="000255";//光标颜色
soundButtonDown="";//按钮按下时声效
soundButtonOver="";//按钮划过时声效
以上为Profile部分参数及其说明,其中,soundButtonDown、soundButtonOver为按钮控件所属。
5、怎样在引擎中增加某个控件的属性:
voidGuiBitmapButtonCtrl:
:
initPersistFields()
{
Parent:
:
initPersistFields();
addField("bitmap",TypeFilename,Offset(mBitmapName,GuiBitmapButtonCtrl));
addField("shineFreq",TypeS32,Offset(mShinefreq,GuiBitmapButtonCtrl));//闪烁频率属性
}
如例子中所示在initPersistFields()函数中,使用addField方法来添加。
6、保存Gui文件时,文件目录中为什么不能显示GUI文件列表:
最可能的原因是你的工程文件目录带有中文,Torque中文支持不友好,导致不能显示。
解决办法:
建立工程时,目录中不能含有中文。
Torque引擎系列之粒子编辑器
一、概要介绍:
粒子系统主要是用来模拟游戏场景中的固定变化的液体或气体类实体,例如大雨、烟雾、薄雾、火焰等。
粒子系统主要由三部分组成:
1、粒子(Particle),指我们所看见的真实物体。
2、粒子发射器(ParticleEmitter),指使粒子成为存在实体的东西。
3、粒子发射器节点(ParticleEmitterNode),指粒子发射器所依附的对象,当粒子作为独立粒子时,必须要用到粒子发射器节点,例如游戏中的火焰等就必须当作是独立粒子。
如果粒子是依附粒子,比如水枪喷射的水、火焰上冒出的烟等依附在游戏玩家、武器、交通工具的粒子就叫做依附粒子,这种类型的粒子只需要粒子和粒子发射器来定义。
二、属性参数:
粒子编辑器主要是用来在场景中动态设置粒子以及粒子发射器的各种属性,所以在使用粒子编辑器之前必须首先熟悉它们各种属性参数所代表的意思。
下面是一个简单例子:
//消防员水枪粒子属性
datablockParticleData(fireManWaterGunParticle)
{
canSaveDynamicFields="1";//能否动态保存参数设置
dragCoefficient="0";//阻力系数(沿发射方向的减速度)
windCoefficient="0";//风力系数(值越大,受风力影响越大)
gravityCoefficient="0.559219";//重力系数
inheritedVelFactor="0.908023";//继承速度
constantAcceleration="0";//沿发射方向的加速度
lifetimeMS="3616";//粒子寿命(最小值为100MS)
lifetimeVarianceMS="0";//随机性粒子寿命(必须小于lifetimeMS)
spinSpeed="0.01";//图片旋转速度
spinRandomMin="-100";//图片最大允许旋转角度
spinRandomMax="0";//图片最小允许旋转角度
useInvAlpha="1";//透明区域颜色切换
animateTexture="0";//为1时,允许使用动画粒子图片纹理
framesPerSec="0";//动画帧速度
textureName="starter.fps/data/shapes/particles/dustParticle.png";//粒子图片路径
animTexName[0]="starter.fps/data/shapes/particles/dustParticle.png";//动画帧
colors[0]="1111";//粒子颜色(各个寿命阶段)
colors[1]="1111";
colors[2]="1111";
colors[3]="1111";
sizes[0]="0.2";//粒子大小(各个寿命阶段)
sizes[1]="0.38";
sizes[2]="0.33";
sizes[3]="0.16";
times[0]="0";//粒子寿命的各个阶段
times[1]="0.5";
times[2]="0.75";
times[3]="1";
};
粒子发射器和粒子节点发射器的各项属性说明不在这里作详细介绍,具体参数详细介绍参见开发大全P520~522页。
三、函数接口
粒子:
ParticleData.reload()//重新载入粒子数据块
粒子发射器:
ParticleEmitterData.reload()//重新载入粒子发射器数据块
粒子发射器节点:
ParticleEmitterNode.setEmitterDataBlock(“data”)//设置粒子发射器datablock,可以用来变换不同的粒子发射器。
四、爆炸特效
Tge支持爆炸特效,有一个专门的explosion类用来模拟场景中的爆炸效果。
下面以一个简单例子介绍一下ExplosionData各属性的意义。
datablockExplosionData(CrossbowExplosion)
{
soundProfile=CrossbowExplosionSound;//爆炸声音
lifeTimeMS=1200;//爆炸持续时间
//爆炸火焰粒子效果
particleEmitter=CrossbowExplosionFireEmitter;//粒子发射器
particleDensity=75;//粒子密度
particleRadius=2;//粒子范围
//爆炸烟雾粒子效果
emitter[0]=CrossbowExplosionSmokeEmitter;
emitter[1]=CrossbowExplosionSparkEmitter;
//摄像机振动效果
shakeCamera=true;//摄像机是否振动
camShakeFreq="10.011.010.0";//摄像机振动频率
camShakeAmp="1.01.01.0";//摄像机振幅
camShakeDuration=0.5;//摄像机振动持续时间
camShakeRadius=10.0;//摄像机振动范围
//爆炸碎片效果
debris=CrossbowExplosionDebris;//碎片data定义
debrisThetaMin=0;//碎片最小旋转角度(围绕X轴)
debrisThetaMax=60;//碎片最大旋转角度(围绕X轴)
debrisPhiMin=0;//碎片最小旋转角度(围绕Z轴)
debrisPhiMax=360;//碎片最大旋转角度(围绕Z轴)
debrisNum=6;//碎片数量
debrisNumVariance=2;//碎片随机数量
debrisVelocity=1;//碎片发散速度
debrisVelocityVariance=0.5;//碎片随机发散速度
//爆炸冲击力
impulseRadius=10;//爆炸冲击波影响范围
impulseForce=15;//爆炸冲击力系数
//爆炸光热效果
lightStartRadius=6;//光在爆炸开始时辐射范围
lightEndRadius=3;//光在爆炸结束时辐射范围
lightStartColor="0.50.50";//光在爆炸开始时颜色
lightEndColor="000";//光在爆炸结束时颜色
};
Torque引擎系列之场景编辑器
一、任务编辑器介绍
Tge任务编辑器主要是用来创建游戏中的场景、地形、设置路径等。
它主要包含了以下几个子编辑器:
WorldEditor(场景编辑器)、TerrainEditor(地形编辑器)、TerrainTerraform
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TORQUE 引擎 核心 SIMOBJECT