Discuz! Board
标题:
[代码|Code]实体旋转变换|Entity Rotation Transformation
[打印本页]
作者:
Jerry小坏
时间:
2017-7-13 16:47
标题:
[代码|Code]实体旋转变换|Entity Rotation Transformation
垂直向前旋转|Vertical Forward Rotation:
public server_frame( )
{
if( !is_valid_ent( ent ) ) return;
new Float: ang[3], Float: vec[3];
pev( ent, pev_angles, ang );
/* 垂直向前[] Vertical Forward */
ang[0] += 1.0;// 速度[] Speed
ang[2] = 180.0;
set_pev( ent, pev_angles, ang );
angle_vector( ang, 2, vec );
new Float: vec2[3];
vec2[0] = vec[0];
vec2[1] = vec[1] + 1.0;
vec2[2] = vec[2];
new Float: vecForward[3];
xs_vec_cross( vec, vec2, vecForward );
xs_vec_normalize( vecForward, vecForward );
/* 圆心位置[] The origin of the centre of the circle */
new Float: org[3];
pev( 1, pev_origin, org );
org[0] = ( vecForward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
org[1] = ( vecForward[1] * 30.0 ) + org[1];
org[2] = ( vecForward[2] * 30.0 ) + org[2];
set_pev( ent, pev_origin, org );
}
复制代码
垂直向后旋转|Vertical Backward Rotation:
public server_frame( )
{
if( !is_valid_ent( ent ) ) return;
new Float: ang[3], Float: vec[3];
pev( ent, pev_angles, ang );
/* 垂直向后[] Vertical Backward */
ang[0] -= 1.0;// 速度[] Speed
ang[2] = 180.0;
set_pev( ent, pev_angles, ang );
angle_vector( ang, 2, vec );
new Float: vec2[3];
vec2[0] = vec[0];
vec2[1] = vec[1] + 1.0;
vec2[2] = vec[2];
new Float: vecBackward[3];
xs_vec_cross( vec, vec2, vecBackward );
xs_vec_normalize( vecBackward, vecBackward );
/* 圆心位置[] The origin of the centre of the circle */
new Float: org[3];
pev( 1, pev_origin, org );
org[0] = ( vecBackward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
org[1] = ( vecBackward[1] * 30.0 ) + org[1];
org[2] = ( vecBackward[2] * 30.0 ) + org[2];
set_pev( ent, pev_origin, org );
}
复制代码
顺时针平面旋转|Clockwise Plane Rotation:
public server_frame( )
{
if( !is_valid_ent( ent ) ) return;
new Float: ang[3], Float: vec[3];
pev( ent, pev_angles, ang );
/* 顺时针[] Clockwise */
ang[1] -= 1.0;// 速度[] Speed
set_pev( ent, pev_angles, ang );
angle_vector( ang, 2, vec );
new Float: vec2[3];
vec2[0] = vec[0];
vec2[1] = vec[1];
vec2[2] = vec[2] + 1.0;
new Float: vecRightward[3];
xs_vec_cross( vec, vec2, vecRightward );
xs_vec_normalize( vecRightward, vecRightward );
/* 圆心位置[] The origin of the centre of the circle */
new Float: org[3];
pev( 1, pev_origin, org );
org[0] = ( vecRightward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
org[1] = ( vecRightward[1] * 30.0 ) + org[1];
org[2] = ( vecRightward[2] * 30.0 ) + org[2];
set_pev( ent, pev_origin, org );
}
复制代码
逆时针平面旋转|Anti-clockwise Plane Rotation:
public server_frame( )
{
if( !is_valid_ent( ent ) ) return;
new Float: ang[3], Float: vec[3];
pev( ent, pev_angles, ang );
/* 逆时针[] Anti-clockwise */
ang[1] += 1.0;// 速度[] Speed
set_pev( ent, pev_angles, ang );
angle_vector( ang, 2, vec );
new Float: vec2[3];
vec2[0] = vec[0];
vec2[1] = vec[1];
vec2[2] = vec[2] + 1.0;
new Float: vecLeftward[3];
xs_vec_cross( vec, vec2, vecLeftward );
xs_vec_normalize( vecLeftward, vecLeftward );
/* 圆心位置[] The origin of the centre of the circle */
new Float: org[3];
pev( 1, pev_origin, org );
org[0] = ( vecLeftward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
org[1] = ( vecLeftward[1] * 30.0 ) + org[1];
org[2] = ( vecLeftward[2] * 30.0 ) + org[2];
set_pev( ent, pev_origin, org );
}
复制代码
垂直向左旋转|Vertical Leftward Rotation:
public server_frame( )
{
if( !is_valid_ent( ent ) ) return;
new Float: ang[3], Float: vec[3];
pev( ent, pev_angles, ang );
/* 垂直向左[] Vertical Leftward */
ang[1] = 180.0;// 速度[] Speed
ang[2] += 1.0;
set_pev( ent, pev_angles, ang );
angle_vector( ang, 2, vec );
new Float: vec2[3];
vec2[0] = vec[0] + 1.0;
vec2[1] = vec[1];
vec2[2] = vec[2];
new Float: vecLeftward[3];
xs_vec_cross( vec, vec2, vecLeftward );
xs_vec_normalize( vecLeftward, vecLeftward );
/* 圆心位置[] The origin of the centre of the circle */
new Float: org[3];
pev( 1, pev_origin, org );
org[0] = ( vecLeftward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
org[1] = ( vecLeftward[1] * 30.0 ) + org[1];
org[2] = ( vecLeftward[2] * 30.0 ) + org[2];
set_pev( ent, pev_origin, org );
}
复制代码
垂直向右旋转|Vertical Rightward Rotation:
public server_frame( )
{
if( !is_valid_ent( ent ) ) return;
new Float: ang[3], Float: vec[3];
pev( ent, pev_angles, ang );
/* 垂直向右[] Vertical Righttward */
ang[1] = 180.0;// 速度[] Speed
ang[2] -= 1.0;
set_pev( ent, pev_angles, ang );
angle_vector( ang, 2, vec );
new Float: vec2[3];
vec2[0] = vec[0] + 1.0;
vec2[1] = vec[1];
vec2[2] = vec[2];
new Float: vecRighttward[3];
xs_vec_cross( vec, vec2, vecRighttward );
xs_vec_normalize( vecRighttward, vecRighttward );
/* 圆心位置[] The origin of the centre of the circle */
new Float: org[3];
pev( 1, pev_origin, org );
org[0] = ( vecRighttward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
org[1] = ( vecRighttward[1] * 30.0 ) + org[1];
org[2] = ( vecRighttward[2] * 30.0 ) + org[2];
set_pev( ent, pev_origin, org );
}
复制代码
欢迎光临 Discuz! Board (https://esfbbs.foxnyx.top/)
Powered by Discuz! X3.2