3DSTATEfor Visual basic.Net开发
注:转载请说明来源处!
基础篇:
一、Cameras摄像机
1、为摄像机设置Handle值
我们通常用STATE_camera_get_default_camera为摄像机设置Handle值。存储handles值得便利应该一直定义成long类型数据。
eg:
Dim CameraHandle As UIntPtr
CameraHandle = STATE_camera_get_default_camera()
其他返回给摄像机handle值得功能函数有:
STATE_camera_get_using_name()
STATE_camera_get_first_camera()
STATE_camera_get_next_camera()
STATE_camera_create()
2、获取和设置摄像机位置
一般位置用一个数组来表示。获取一个摄像机的位置代码如下:
Dim CamLocX As Double
Dim CamLocY As Double
Dim CamLocZ As Double
STATE_camera_get_location( Camera, &CamLocX, &CamLocY, &CamLocZ )
或
Dim CamLoc(2) As Double
STATE_camera_get_location1( Camera, CamLoc)
设置一个摄像机的位置用同样的方式,STATE_camera_set_location和STATE_camera_set_location1,如:
Dim CamLoc(2) AsDouble
CamLoc(0) = -100
CamLoc(1) = 100
CamLoc(2) = 100
STATE_camera_set_location1(STATE_camera_get_default_camera, CamLoc)
3、获取和设置摄像机的方向
摄像机的方向值是一个向量,这个向量的长度可以为任何值除了0,但是系统返回时将会把它归一化(其长度为1)。它的相关函数有:
STATE_camera_get_direction
STATE_camera_get_direction1
STATE_camera_set_direction
STATE_camera_set_direction1
eg:
Dim CamDirection(2) AsDouble
STATE_camera_get_direction1(STATE_camera_get_default_camera, CamDirection)
MsgBox(CamDirection(0).ToString())
4、移动摄像机
移动摄像机用STATE_camera_move函数。
例如:
STATE_camera_move(STATE_camera_get_default_camera, _3DSTATE.CAMERA_SPACE, -10, 0, 0)
表示摄像机向前移动了10个单位。
5、移动摄像机更好的方式
用函数CameraWasMoved = STATE_camera_move_with_collision_detection ( Camera, WantedLocation, CameraPhysicalWidth)判断是否能移动。
Dim WantedLocation(2) AsDouble
WantedLocation(0) = -100
WantedLocation(1) = 100
WantedLocation(2) = 100
Dim CameraPhysicalWidth AsDouble = 200
Dim CameraWasMoved AsBoolean = STATE_camera_move_with_collision_detection(STATE_camera_get_default_camera, WantedLocation, CameraPhysicalWidth)
MsgBox(CameraWasMoved.ToString())
6、旋转摄像机
左右旋转用函数STATE_camera_rotate_z
例如:
STATE_camera_rotate_z(STATE_camera_get_default_camera, 2, WORLD_SPACE)
摄像机向左旋转2度。
STATE_camera_rotate_y( Camera, 2, CAMERA_SPACE)
摄像机向上旋转2度。