骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 2420|回复: 1

[经验与教程] position_get_rotation_around_xxx的妙用

[复制链接]

286

主题

2593

回帖

1219

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
2343857
第纳尔
17647
精华
0
互助
69
荣誉
1
贡献
278
魅力
90
注册时间
2014-12-4

骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之奉献勋章骑士美德之仁慈勋章[杰出会员互助勋章]元老骑士勋章霸主正版勋章

鲜花(337) 鸡蛋(2)
发表于 2018-10-15 22:39:43 | 显示全部楼层 |阅读模式
本帖最后由 今天手气不错啊 于 2018-10-17 11:14 编辑

所周知,在三维空间中,存在两种座标系:

一种是全局坐标系,也就是世界坐标
一种是局部坐标系,通常是以一个三维对象的中心为原点建立的坐标系


而在骑砍ms中,对于position这种特殊计量的很多操作是基于全局坐标系而言,请看以下三个操作:

position_get_rotation_around_x
position_get_rotation_around_y
position_get_rotation_around_z
这三个操作符,顾名思义是对一个position取其相对于全局坐标系,也就是世界坐标系的相对于xyz的旋转角,

考虑下面的一个问题

假设全局坐标系原点定义在左下角,向上为x轴正方向,向右为y轴正方向,由内向外为z轴正方向,可建立如下图的坐标系(只考虑xy平面)


假设该空间内有一个为P的Position计量,如下图所示


如果对该P进行position_get_around_y的计算,结果会如何呢?请看下图


很显然,角度a就是求解之后的结果,那么既然如此,不妨再设空间内有一点M,现在我们想让P转向M,要转多少角度呢?


配合position_get_rotation_around_y操作符,答案是显而易见的


先求出PM之间向量,然后通过position_get_rotation_around_y求出PM向量与y轴夹角b,然后再求P与Y轴的夹角a,最后b-a就是最后的转向角度

其他两个操作符是同样的道理

对position这种计量的几点注解:
position计量是一种特殊的表示三维空间信息的数据结构,包含九个信息:
a. 该position的坐标x
b. 该position的坐标y
c. 该position的坐标z

d. 该position与x的旋转角
e. 该position与y的旋转角
f. 该position与z的旋转角

g. 该position的x轴缩放
h. 该position的y轴缩放
i. 该position的z轴缩放

在一个position计量中最最常用的是前六个信息,即位置信息和转向信息

使用C#语言可以写成如下数据结构:
  1. class Position
  2. {
  3.   public Vector3 Real_Position{get;set;}
  4.   public Vector3 Rotation{get;set;}
  5.   public Vector3 Scale{get;set;}
  6. }

  7. class Vector3
  8. {
  9.   public float X{get;set;}
  10.   public float Y{get;set;}
  11.   public float Z{get;set;}
  12. }
复制代码

写在后面:


一些操作符,比如prop_instance_get_position或者是agent_get_position获取到的是position计量而不是仅仅一个位置!既然如此,那么我们就可以利用获取到的这个position计量来做一些复杂的操作!






评分

参与人数 2第纳尔 +50 互助 +2 收起 理由
蛋清 + 1 ·
小丑遊戲 + 50 + 1 原创内容,值得鼓励!

查看全部评分

39

主题

4373

回帖

1524

积分

男爵[离任版主]

世纪风云制作组[模型]

兵器匠人

Rank: 5Rank: 5Rank: 5

UID
624635
第纳尔
2063
精华
0
互助
12
荣誉
14
贡献
100
魅力
18
注册时间
2012-1-13

骑士荣誉之维京征服汉化勋章

鲜花(147) 鸡蛋(0)
发表于 2018-11-8 20:26:18 | 显示全部楼层
这个配上三角函数就能干很多事情了,很有用的内容
骑兵团队来打仗,就像野火烧八方;
杀奔西来杀奔东,人似猛虎马似狼;

骑兵团队来打仗,就像彩云追太阳;
狭路相逢勇者胜,苦到尽头强者昌。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-4-24 10:29 , Processed in 0.102120 second(s), 21 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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