您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x节点(b2MouseJoint.h)API

2013-11-28 21:20 417 查看
本文来自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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: