您所在的位置: 首页>>开发>>语言&工具>>

林登脚本语言帮你成为优秀建筑师(3)

http://developer.51cto.com  2007-09-26 10:45  维维编译  天极网  我要评论(0)
  • 摘要:本文只是涉及了一些关于物体的基本知识。但是,这些对你建筑城堡来说足够了。当你掌握了基本的选项之后,你可以尝试一些高级选项,如凹陷和细化。这些选项能够允许你改变prim并且创建更多有趣的形状。最好的学习这些选项的方式就是创建prim,并且使用可用的选项来实验,直到你掌握了如何改变prim的方法。
  • 标签:林登  脚本  语言  LSL  prim

下一步就是在地基上增加青草。你可能想走出城堡外,增加青草会使它看起来像一个很美的草地——一个多好的建筑地啊!为了增加青草,改变每个立方体的最上一层的纹理。注意每个prim的每个面都可以有不同的纹理。

首先从你的库存里选择草地纹理。我喜欢标准库里的“Islands-Grass”。将这个纹理拖拽到所有的地基块的顶部。这将会建成一个和地面融合在一起的草坪。

图9:一个草坪

创建城堡建筑块

你已经看到了一系列的基本建造选项。一般来说你需要学习:

◆创建任何prim类型
◆移动一个prim或物体
◆改变一个prim或物体的大小
◆应用纹理
◆应用不同面的不同纹理

你可以快速的建造一个图1中类似的城堡。在本节中你将看到如何创建这些块。

城堡被打包成一个巨大的名为“Castle in a Box Tutorial”的方盒。这个入门方盒包含了本文所用到的所有建筑块和纹理。除此以外你还有对这些物品的所有权限,让你仔细检查它们是怎么建造出来的。

你将可能用到这一技术来创建你自己的第二人生中的建筑。首先创建prim,并将它们组合成大的物体。这些大的物体将会成为建筑的建筑块。比如,城堡由以下建筑块组成:

3X3 水泥
3X3 水泥草
城垛
壁角墙壁
壁角塔
门部分
地板
前门
屋顶
短的墙壁
小壁角塔
台阶
墙壁
窗口墙壁

在图10中你可以看到摆放在外的一些建筑块。

图10:城堡建筑块

每个建筑块都是使用本文的方法建造的。比如,将一些圆筒堆积在一起,在顶部安装一个蓝色的圆锥体,就创建了一个塔。建造一个墙/窗纹理在前面,其他使用内部纹理,将会创建一个墙。每个块的基本元素都是组合的。除了门,你看到了所用的所有技术。门需要使用一个简单的林登脚本语言(LSL)(参考前文)来允许开关。

列表1 显示了操作门的代码

The script opens and closes the door.
// ********** USER SETTINGS HERE **********
// automatically close the door after this
// many seconds, set to 0 to disable
float TIMER_CLOSE = 5.0;

// direction door opens in. Either 1
// (outwards) or -1 (inwards);
integer DIRECTION = -1;
// ********** END OF USER SETTINGS **********

integer DOOR_OPEN = 1;
integer DOOR_CLOSE = 2;

vector mypos; // starting pos of the door

door(integer what)
{
rotation rot;
rotation delta;

llSetTimerEvent(0); // kill any running timers

if ( what == DOOR_OPEN )
{
llTriggerSound("Door open", 0.8);

rot = llGetRot();
delta = llEuler2Rot(<0, 0, -DIRECTION * PI_BY_TWO>);
rot = delta * rot;
// rotate by -45 degree
llSetRot(rot);
}
else if ( what == DOOR_CLOSE)
{
rot = llGetRot();
delta = llEuler2Rot(<0, 0, DIRECTION * PI_BY_TWO>);
// rotate by 45 degree
rot = delta * rot;
llSetRot(rot);
llTriggerSound("Door close", 0.8);
}
}

default // closed
{
on_rez(integer start_param)
{
// reset, so we store the new position
llResetScript();
}

state_entry()
{
// remember where we're supposed to be
mypos = llGetPos();
}

touch_start(integer total_number)
{
door(DOOR_OPEN);
state is_open;
}

// done moving me around, store new position
moving_end()
{
mypos = llGetPos();
}
}

state is_open
{
state_entry()
{
llSetTimerEvent(TIMER_CLOSE);
}

touch_start(integer num)
{
door(DOOR_CLOSE);

llSetPos(mypos);

state default;
}

timer()
{
// time to close the door
door(DOOR_CLOSE);
llSetPos(mypos);
state default;
}

moving_start()
{
// close door when door is being moved
door(DOOR_CLOSE);

state default;
}
}

列表1中的脚本为门建立了两个状态:开和关。当一个用户触碰到门时,它将会从一个状态转化为另外一个状态。门是一个简单的长方形基本元素。触碰函数将门旋转45度,“打开”门,切换到开状态。开状态将会持续一段时间(5.0秒,根据用户在列表1中的设置),然后回转45度关门。

城堡有很多纹理。我可以轻松的写一篇关于纹理创建的文章。一种最简单的方法是在因特网上寻找。当你发现一个纹理之后,可以上传到第二人生里。比如为了寻找花岗岩纹理,你可以在Google里进行图片检索,寻找“granite texture”。你将会找到一些。

(作者注:在你使用纹理以前确保它是免费的。很多网站都要求用户得到它们的使用许可。第二人生允许你使用任何你获得有效使用许可的纹理,请不要违犯社区规定。如果你想创建自己的纹理,请看看Adobe Photoshop和Aodebe Illustrator这样的程序。)

通过使用地面融合,基本元素,组合和纹理,你可以创造任何你梦想的东西。本文介绍了你如何着手准备一个地方来建筑以及如何创建可用的建筑块来建造建筑物。你也看到了如何去获取这些建筑块。

在第二人生中建筑是非常耗时的工作。然而,当你成为一个熟练的建造者并且累及一定量的通用物品时,建造新的物品就很容易了。

用所知的一切去建筑

本文只是涉及了一些关于物体的基本知识。但是,这些对你建筑城堡来说足够了。当你掌握了基本的选项之后,你可以尝试一些高级选项,如凹陷和细化。这些选项能够允许你改变prim并且创建更多有趣的形状。比如,你可以凹陷一个正方体来创建一个中空的盒子。你可以切开一个球体成半球。最好的学习这些选项的方式就是创建prim,并且使用可用的选项来实验,直到你掌握了如何改变prim的方法。快乐的建造吧!

【相关文章】

【责任编辑:火凤凰 TEL:(010)68476606】


共3页: 上一页 [1] [2] 3
【内容导航】
C++是垃圾语言?!
XML可扩展标识语言详解
UML统一建模语言
脚本攻击和防范
深入Vista应用程序开发
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有