本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(b2MouseJoint.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
//Mouse joints(接头)用于把 body上的一个点作为制定世界的跟踪点
/// 这是一个使用最大力的软约束,这个约束允许在不施加巨大力的情况下伸展
///cocos2d-x-3.0alpha0/external/Box2D/Dynamics/Joints
//Mouse joints(接头)用于把 body 上的一个点作为制定世界的跟踪点
/// 这是一个使用最大力的软约束,这个约束允许在不施加巨大力的情况下伸展
#ifndef B2_MOUSE_JOINT_H
#define B2_MOUSE_JOINT_H
#include <Box2D/Dynamics/Joints/b2Joint.h>
/// Mouse joints(接头)定义. 这需要一个 world target(目标) point,
/// 调节参数,时间步长
struct b2MouseJointDef : public b2JointDef
{
b2MouseJointDef()
{
type = e_mouseJoint;
target.Set(0.0f, 0.0f);
maxForce = 0.0f;
frequencyHz = 5.0f;
dampingRatio = 0.7f;
}
/// 初始化 world target(目标) point. 这假设 body 的锚点开始重合
b2Vec2 target;
/// 约束可以施加给移动候选体的最大力
/// 通常你会使用多个weight(重量)表示
float32 maxForce;
/// 响应速度
float32 frequencyHz;
/// 阻尼比率. 0 = no 阻尼, 1 = 临界阻尼。.
float32 dampingRatio;
};
/// Mouse joints(接头)用于把 body 上的一个点作为制定世界的跟踪点
/// 这是一个使用最大力的软约束,这个约束允许在不施加巨大力的情况下伸展
/// NOTE: 这个 joints(接头)没有手动记录,因为他是在 testbed(测试平台)里面用作开发的
/// 如果你想学习如何使用鼠标 joints(接头),请查看 testbed(测试平台)
class b2MouseJoint : public b2Joint
{
public:
/// Implements b2Joint. //实现
b2Vec2 GetAnchorA() const;
/// Implements b2Joint.
b2Vec2 GetAnchorB() const;
/// Implements b2Joint.
b2Vec2 GetReactionForce(float32 inv_dt) const;
/// Implements b2Joint.
float32 GetReactionTorque(float32 inv_dt) const;
/// 使用这个更新target(目标) point
void SetTarget(const b2Vec2& target);
const b2Vec2& GetTarget() const;
/// Set/get 最大力,以牛顿为单位.
void SetMaxForce(float32 force);
float32 GetMaxForce() const;
/// Set/get 频率(以赫兹为单位)
void SetFrequency(float32 hz);
float32 GetFrequency() const;
/// Set/get 阻尼比率 (dimensionless). //量纲
void SetDampingRatio(float32 ratio);
float32 GetDampingRatio() const;
/// mouse joints(接头)不支持 dumping(阻尼)
void Dump() { b2Log("Mouse joint dumping is not supported.\n"); }
protected:
friend class b2Joint;
b2MouseJoint(const b2MouseJointDef* def);
void InitVelocityConstraints(const b2SolverData& data);
void SolveVelocityConstraints(const b2SolverData& data);
bool SolvePositionConstraints(const b2SolverData& data);
b2Vec2 m_localAnchorB;
b2Vec2 m_targetA;
float32 m_frequencyHz;
float32 m_dampingRatio;
float32 m_beta;
// Solver shared
b2Vec2 m_impulse;
float32 m_maxForce;
float32 m_gamma;
// Solver temp
int32 m_indexA;
int32 m_indexB;
b2Vec2 m_rB;
b2Vec2 m_localCenterB;
float32 m_invMassB;
float32 m_invIB;
b2Mat22 m_mass;
b2Vec2 m_C;
};
#endif