请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

ESFKAMI

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

ESFX

ESF: Xenoverse

ESF123

ESF1.2.3

EVM2.1

EVM2.1

ECXSSJ

ECX: TeamSSJ

ECX2.2

ECX RC2

ECX2.3

ECX RC3

查看: 1720|回复: 0

[代码|Code]实体旋转变换|Entity Rotation Transformation

[复制链接]

212

主题

217

帖子

1221

积分

ESFKAMI

Rank: 8Rank: 8

积分
1221
发表于 2017-7-13 16:47:30 | 显示全部楼层 |阅读模式
垂直向前旋转|Vertical Forward Rotation:
  1. public server_frame( )
  2. {
  3.         if( !is_valid_ent( ent ) ) return;

  4.         new Float: ang[3], Float: vec[3];
  5.         pev( ent, pev_angles, ang );

  6.         /* 垂直向前[] Vertical Forward */
  7.         ang[0] += 1.0;// 速度[] Speed
  8.         ang[2] = 180.0;
  9.         set_pev( ent, pev_angles, ang );

  10.         angle_vector( ang, 2, vec );
  11.         new Float: vec2[3];

  12.         vec2[0] = vec[0];
  13.         vec2[1] = vec[1] + 1.0;
  14.         vec2[2] = vec[2];

  15.         new Float: vecForward[3];
  16.         xs_vec_cross( vec, vec2, vecForward );
  17.         xs_vec_normalize( vecForward, vecForward );

  18.         /* 圆心位置[] The origin of the centre of the circle */
  19.         new Float: org[3];
  20.         pev( 1, pev_origin, org );
  21.         org[0] = ( vecForward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
  22.         org[1] = ( vecForward[1] * 30.0 ) + org[1];
  23.         org[2] = ( vecForward[2] * 30.0 ) + org[2];

  24.         set_pev( ent, pev_origin, org );
  25. }
复制代码



垂直向后旋转|Vertical Backward Rotation:
  1. public server_frame( )
  2. {
  3.         if( !is_valid_ent( ent ) ) return;

  4.         new Float: ang[3], Float: vec[3];
  5.         pev( ent, pev_angles, ang );

  6.         /* 垂直向后[] Vertical Backward */
  7.         ang[0] -= 1.0;// 速度[] Speed
  8.         ang[2] = 180.0;
  9.         set_pev( ent, pev_angles, ang );

  10.         angle_vector( ang, 2, vec );
  11.         new Float: vec2[3];

  12.         vec2[0] = vec[0];
  13.         vec2[1] = vec[1] + 1.0;
  14.         vec2[2] = vec[2];

  15.         new Float: vecBackward[3];
  16.         xs_vec_cross( vec, vec2, vecBackward );
  17.         xs_vec_normalize( vecBackward, vecBackward );

  18.         /* 圆心位置[] The origin of the centre of the circle */
  19.         new Float: org[3];
  20.         pev( 1, pev_origin, org );
  21.         org[0] = ( vecBackward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
  22.         org[1] = ( vecBackward[1] * 30.0 ) + org[1];
  23.         org[2] = ( vecBackward[2] * 30.0 ) + org[2];

  24.         set_pev( ent, pev_origin, org );
  25. }
复制代码



顺时针平面旋转|Clockwise Plane Rotation:
  1. public server_frame( )
  2. {
  3.         if( !is_valid_ent( ent ) ) return;

  4.         new Float: ang[3], Float: vec[3];
  5.         pev( ent, pev_angles, ang );

  6.         /* 顺时针[] Clockwise */
  7.         ang[1] -= 1.0;// 速度[] Speed
  8.         set_pev( ent, pev_angles, ang );

  9.         angle_vector( ang, 2, vec );
  10.         new Float: vec2[3];

  11.         vec2[0] = vec[0];
  12.         vec2[1] = vec[1];
  13.         vec2[2] = vec[2] + 1.0;

  14.         new Float: vecRightward[3];
  15.         xs_vec_cross( vec, vec2, vecRightward );
  16.         xs_vec_normalize( vecRightward, vecRightward );

  17.         /* 圆心位置[] The origin of the centre of the circle */
  18.         new Float: org[3];
  19.         pev( 1, pev_origin, org );
  20.         org[0] = ( vecRightward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
  21.         org[1] = ( vecRightward[1] * 30.0 ) + org[1];
  22.         org[2] = ( vecRightward[2] * 30.0 ) + org[2];

  23.         set_pev( ent, pev_origin, org );
  24. }
复制代码



逆时针平面旋转|Anti-clockwise Plane Rotation:
  1. public server_frame( )
  2. {
  3.         if( !is_valid_ent( ent ) ) return;

  4.         new Float: ang[3], Float: vec[3];
  5.         pev( ent, pev_angles, ang );

  6.         /* 逆时针[] Anti-clockwise */
  7.         ang[1] += 1.0;// 速度[] Speed
  8.         set_pev( ent, pev_angles, ang );

  9.         angle_vector( ang, 2, vec );
  10.         new Float: vec2[3];

  11.         vec2[0] = vec[0];
  12.         vec2[1] = vec[1];
  13.         vec2[2] = vec[2] + 1.0;

  14.         new Float: vecLeftward[3];
  15.         xs_vec_cross( vec, vec2, vecLeftward );
  16.         xs_vec_normalize( vecLeftward, vecLeftward );

  17.         /* 圆心位置[] The origin of the centre of the circle */
  18.         new Float: org[3];
  19.         pev( 1, pev_origin, org );
  20.         org[0] = ( vecLeftward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
  21.         org[1] = ( vecLeftward[1] * 30.0 ) + org[1];
  22.         org[2] = ( vecLeftward[2] * 30.0 ) + org[2];

  23.         set_pev( ent, pev_origin, org );
  24. }
复制代码



垂直向左旋转|Vertical Leftward Rotation:
  1. public server_frame( )
  2. {
  3.         if( !is_valid_ent( ent ) ) return;

  4.         new Float: ang[3], Float: vec[3];
  5.         pev( ent, pev_angles, ang );

  6.         /* 垂直向左[] Vertical Leftward */
  7.         ang[1] = 180.0;// 速度[] Speed
  8.         ang[2] += 1.0;
  9.         set_pev( ent, pev_angles, ang );

  10.         angle_vector( ang, 2, vec );
  11.         new Float: vec2[3];

  12.         vec2[0] = vec[0] + 1.0;
  13.         vec2[1] = vec[1];
  14.         vec2[2] = vec[2];

  15.         new Float: vecLeftward[3];
  16.         xs_vec_cross( vec, vec2, vecLeftward );
  17.         xs_vec_normalize( vecLeftward, vecLeftward );

  18.         /* 圆心位置[] The origin of the centre of the circle */
  19.         new Float: org[3];
  20.         pev( 1, pev_origin, org );
  21.         org[0] = ( vecLeftward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
  22.         org[1] = ( vecLeftward[1] * 30.0 ) + org[1];
  23.         org[2] = ( vecLeftward[2] * 30.0 ) + org[2];

  24.         set_pev( ent, pev_origin, org );
  25. }
复制代码



垂直向右旋转|Vertical Rightward Rotation:
  1. public server_frame( )
  2. {
  3.         if( !is_valid_ent( ent ) ) return;

  4.         new Float: ang[3], Float: vec[3];
  5.         pev( ent, pev_angles, ang );

  6.         /* 垂直向右[] Vertical Righttward */
  7.         ang[1] = 180.0;// 速度[] Speed
  8.         ang[2] -= 1.0;
  9.         set_pev( ent, pev_angles, ang );

  10.         angle_vector( ang, 2, vec );
  11.         new Float: vec2[3];

  12.         vec2[0] = vec[0] + 1.0;
  13.         vec2[1] = vec[1];
  14.         vec2[2] = vec[2];

  15.         new Float: vecRighttward[3];
  16.         xs_vec_cross( vec, vec2, vecRighttward );
  17.         xs_vec_normalize( vecRighttward, vecRighttward );

  18.         /* 圆心位置[] The origin of the centre of the circle */
  19.         new Float: org[3];
  20.         pev( 1, pev_origin, org );
  21.         org[0] = ( vecRighttward[0] * 30.0 ) + org[0];// 30.0 = 半径[] Radius
  22.         org[1] = ( vecRighttward[1] * 30.0 ) + org[1];
  23.         org[2] = ( vecRighttward[2] * 30.0 ) + org[2];

  24.         set_pev( ent, pev_origin, org );
  25. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ESFKAMI    

GMT+8, 2018-10-16 06:21 , Processed in 0.262133 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表