コード例 #1
1
	void Start ()
	{
		//Get Motor Components
		armHinge = GameObject.Find ("GoblinBossArm").GetComponent<HingeJoint2D>();
		armMotor = armHinge.motor;
		
		//Set Motor Configs
		armMotor.motorSpeed = 45.0f;
		armMotor.maxMotorTorque = 20.0f;	
		armHinge.motor = armMotor;

		//Set Sight Configs
		//Initialize sight ray
		sightRay1Start = sight1Start.position;
		sightRay1End = sight1End.position;

		sightRay2Start = sight2Start.position;
		sightRay2End = sight2End.position;

		//Debug
		//Debug.Log("Motor Speed Set: "+armHinge.motor.motorSpeed);

		//Invoke TiltBack
		Invoke ("TiltArmBack", 1.5f);
		InvokeRepeating("PlayAudio", 1.0f, 10.0f);

		//hits config
		_hits = GameObject.Find ("GoblinBossBody").GetComponent<GoblinBody>();
	}
コード例 #2
1
        public override void OnEnter()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (go != null)
            {
                _joint = go.GetComponent<SliderJoint2D>();

                if(_joint!=null)
                {
                    _motor = _joint.motor;
                    _limits = _joint.limits;
                }
            }

            SetProperties();

            if(!everyFrame)
            {
                Finish();
            }
        }
コード例 #3
0
    void Awake()
    {
        isOpened = false;
        _rigidbody = gameObject.GetComponent<Rigidbody2D>();
        _rigidbody.gravityScale = 0.0f;
        _hinge = GetComponent<HingeJoint2D>();
        JointAngleLimits2D anglelLimits = new JointAngleLimits2D();
        anglelLimits.min = initialMinAngle;
        anglelLimits.max = initalMaxAngle;
        motors = new JointMotor2D();
        motors.motorSpeed = 0;
        motors.maxMotorTorque = 10000;

        if(clockwise)
        {
            openedSpeed = _absolute_speed;
            closeSpeed = -1f * _absolute_speed;
        }
        else
        {
            openedSpeed = -1f * _absolute_speed;
            closeSpeed = _absolute_speed;
        }

        _hinge.limits = anglelLimits;
    }
コード例 #4
0
ファイル: ballIntake.cs プロジェクト: rpappa/First-Brawl
 IEnumerator BallPickup()
 {
     HingeJoint2D hinge = GetComponent<HingeJoint2D> ();
     CircleCollider2D collider = GetComponent<CircleCollider2D> ();
     JointMotor2D m = new JointMotor2D ();
     JointAngleLimits2D limits = new JointAngleLimits2D();
     while ( hinge.jointAngle < 272 ) {
         m.motorSpeed = 350;
         m.maxMotorTorque = 1000000;
         yield return 0;
         Debug.Log(hinge.jointAngle);
     }
     hinge.useLimits = false;
     m.motorSpeed = 120;
     while (hinge.jointAngle < 390) {
         m.motorSpeed = 120;
         Debug.Log(hinge.jointAngle);
         yield return 0;
     }
     m.motorSpeed = 0;
     limits.min = 0;
     limits.max = 0;
     hinge.limits = limits;
     hinge.useLimits = true;
     hinge.motor = m;
 }
コード例 #5
0
 static public int constructor(IntPtr l)
 {
     try {
                     #if DEBUG
         var    method     = System.Reflection.MethodBase.GetCurrentMethod();
         string methodName = GetMethodName(method);
                     #if UNITY_5_5_OR_NEWER
         UnityEngine.Profiling.Profiler.BeginSample(methodName);
                     #else
         Profiler.BeginSample(methodName);
                     #endif
                     #endif
         UnityEngine.JointMotor2D o;
         o = new UnityEngine.JointMotor2D();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
             #if DEBUG
     finally {
                     #if UNITY_5_5_OR_NEWER
         UnityEngine.Profiling.Profiler.EndSample();
                     #else
         Profiler.EndSample();
                     #endif
     }
             #endif
 }
コード例 #6
0
ファイル: VehicleBody.cs プロジェクト: jbcon/SillyKarz
    LocomotionComponent AttachLeg(GameObject socket)
    {
        // make WheelJoint2D on Vehicle body
        WheelJoint2D legJoint = gameObject.AddComponent<WheelJoint2D>();
        GameObject l = Instantiate(leg) as GameObject;

        l.transform.parent = transform;
        l.transform.localPosition = socket.transform.localPosition;
        legJoint.connectedBody = l.GetComponent<Rigidbody2D>();
        legJoint.connectedAnchor = l.transform.localPosition;
        legJoint.anchor = socket.transform.localPosition;
        legJoint.useMotor = true;
        JointSuspension2D sus = new JointSuspension2D();
        sus.frequency = 5;
        sus.dampingRatio = 1;
        legJoint.suspension = sus;
        JointMotor2D newMotor = new JointMotor2D();
        newMotor.motorSpeed = -300;
        newMotor.maxMotorTorque = 100;
        legJoint.motor = newMotor;

        SpinningLeg spinleg = l.GetComponent<SpinningLeg>();
        spinleg.SetRefToJoint(legJoint);
        return spinleg;
    }
コード例 #7
0
    static public int set_maxMotorTorque(IntPtr l)
    {
        UnityEngine.JointMotor2D o = (UnityEngine.JointMotor2D)checkSelf(l);
        float v;

        checkType(l, 2, out v);
        o.maxMotorTorque = v;
        setBack(l, o);
        return(0);
    }
コード例 #8
0
 void Start()
 {
     startPoint = transform.position;
     body = GetComponent<Rigidbody2D>();
     jointMotor = new JointMotor2D();
     jointMotor.maxMotorTorque = 10000f;
     wheelJoint = GetComponent<HingeJoint2D>();
     wheelJoint.useMotor = true;
     //wheelJoint.motor = jointMotor;
 }
コード例 #9
0
    void Start()
    {
        unitLossNitro = 0.999f / (NitroTime / 0.1f); // рахується скільки з nitrobar одиниць беде забираться за 0.1s
        curentNitroTimer = NitroTime;
        wheelJoints = gameObject.GetComponents<WheelJoint2D>();
        motorBack = wheelJoints[0].motor;
        motorBack.motorSpeed = Speed; // скорость машини

        wheelJoints[0].motor = motorBack;
        wheelJoints[1].motor = motorBack;
    }
コード例 #10
0
	static public int constructor(IntPtr l) {
		try {
			UnityEngine.JointMotor2D o;
			o=new UnityEngine.JointMotor2D();
			pushValue(l,true);
			pushValue(l,o);
			return 2;
		}
		catch(Exception e) {
			return error(l,e);
		}
	}
コード例 #11
0
 public static int constructor(IntPtr l)
 {
     try {
         UnityEngine.JointMotor2D o;
         o=new UnityEngine.JointMotor2D();
         pushValue(l,o);
         return 1;
     }
     catch(Exception e) {
         LuaDLL.luaL_error(l, e.ToString());
         return 0;
     }
 }
コード例 #12
0
 static public int constructor(IntPtr l)
 {
     try {
         UnityEngine.JointMotor2D o;
         o = new UnityEngine.JointMotor2D();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
コード例 #13
0
    void FixedUpdate()
    {
        float acceleration = Input.GetAxis("Horizontal");
        HingeJoint2D hinge = GetComponent<HingeJoint2D> ();
        JointMotor2D m = new JointMotor2D ();

        // key up is powah * 1, key down is powah * -1, no key is powah * 0
        acceleration = Input.GetAxis("Vertical");

        // key up is powah * 1, key down is powah * -1, no key is powah * 0
        m.motorSpeed = speed * acceleration;
        hinge.useMotor = true;
    }
コード例 #14
0
 static public int constructor(IntPtr l)
 {
     try {
         UnityEngine.JointMotor2D o;
         o = new UnityEngine.JointMotor2D();
         pushValue(l, o);
         return(1);
     }
     catch (Exception e) {
         LuaDLL.luaL_error(l, e.ToString());
         return(0);
     }
 }
コード例 #15
0
 static void SliderJoint2D_motor(JSVCall vc)
 {
     if (vc.bGet)
     {
         UnityEngine.SliderJoint2D _this = (UnityEngine.SliderJoint2D)vc.csObj;
         var result = _this.motor;
         JSMgr.datax.setObject((int)JSApi.SetType.Rval, result);
     }
     else
     {
         UnityEngine.JointMotor2D  arg0  = (UnityEngine.JointMotor2D)JSMgr.datax.getObject((int)JSApi.GetType.Arg);
         UnityEngine.SliderJoint2D _this = (UnityEngine.SliderJoint2D)vc.csObj;
         _this.motor = arg0;
     }
 }
コード例 #16
0
	// Update is called once per frame
	void Update () 
    {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            jointMotor = wheelJoint.motor;
            jointMotor.motorSpeed += 1f;
            wheelJoint.motor = jointMotor;
        }

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            jointMotor = wheelJoint.motor;
            jointMotor.motorSpeed -= 1f;
            wheelJoint.motor = jointMotor;
        }
	}
コード例 #17
0
 static void JointMotor2D_maxMotorTorque(JSVCall vc)
 {
     if (vc.bGet)
     {
         UnityEngine.JointMotor2D _this = (UnityEngine.JointMotor2D)vc.csObj;
         var result = _this.maxMotorTorque;
         JSApi.setSingle((int)JSApi.SetType.Rval, (System.Single)(result));
     }
     else
     {
         System.Single            arg0  = (System.Single)JSApi.getSingle((int)JSApi.GetType.Arg);
         UnityEngine.JointMotor2D _this = (UnityEngine.JointMotor2D)vc.csObj;
         _this.maxMotorTorque = arg0;
         JSMgr.changeJSObj(vc.jsObjID, _this);
     }
 }
コード例 #18
0
	// Use this for initialization
	void Start () 
	{
		//Get Motor Components
		wingHinge = GameObject.Find ("ShaddowWingsPinkBack").GetComponent<HingeJoint2D>();
		wingMotor = wingHinge.motor;
		
		//Set Motor Configs
		wingMotor.motorSpeed = 50.0f;
		wingMotor.maxMotorTorque = 5000.0f;	
		wingHinge.motor = wingMotor;
		
		//Debug
		//Debug.Log("Motor Speed Set: "+wingHinge.motor.motorSpeed);
		
		//Invoke WingsDown
		Invoke ("WingsFlightDown", 1.5f);
	}
コード例 #19
0
	void Start ()
	{
		//GetHits
		_hits = GameObject.Find("GoblinBossBody").GetComponent<GoblinBody>();

		//Get Component
		headHinge = GameObject.Find ("GoblinBossHead").GetComponent<HingeJoint2D>();
		headMotor = headHinge.motor;

		headMotor.motorSpeed = 5.0f;
		headMotor.maxMotorTorque = 20.0f;	
		headHinge.motor = headMotor;

		Debug.Log("Motor Speed Set: "+headHinge.motor.motorSpeed);

		Invoke ("TiltHeadBack", 1.5f);
	}
コード例 #20
0
ファイル: ballIntake.cs プロジェクト: rpappa/First-Brawl
 // ugly code incoming
 void OnTriggerEnter2D(Collider2D otherCollider)
 {
     HingeJoint2D hinge = GetComponent<HingeJoint2D> ();
     CircleCollider2D collider = GetComponent<CircleCollider2D> ();
     JointMotor2D m = new JointMotor2D ();
     JointAngleLimits2D limits = new JointAngleLimits2D();
     limits.min = 270;
     limits.max = 275;
     hinge.limits = limits;
     //hinge.useLimits = false;
     m.motorSpeed = 160;
     //hinge.useLimits = false;
     m.maxMotorTorque = 1000000;
     hinge.motor = m;
     collider.isTrigger = false;
     StartCoroutine (BallPickup());
 }
コード例 #21
0
 // Use this for initialization
 void Update()
 {
     HingeJoint2D hinge = GetComponent<HingeJoint2D> ();
     JointMotor2D m = new JointMotor2D ();
     if (Input.GetButton ("Fire1") == true) {
                     m.motorSpeed = 900;
                     m.maxMotorTorque = 100000;
                     hinge.motor = m;
             } else if (Input.GetButton ("Fire2") == true) {
                     m.motorSpeed = 900;
                     m.maxMotorTorque = 100000;
                     hinge.motor = m;
             } else {
                     m.motorSpeed = 0;
                     m.maxMotorTorque = 100000;
                     hinge.motor = m;
             }
 }
コード例 #22
0
        /// <summary>
        /// Read the data using the reader.
        /// </summary>
        /// <param name="reader">Reader.</param>
        public override object Read(ISaveGameReader reader)
        {
            UnityEngine.JointMotor2D jointMotor2D = new UnityEngine.JointMotor2D();
            foreach (string property in reader.Properties)
            {
                switch (property)
                {
                case "motorSpeed":
                    jointMotor2D.motorSpeed = reader.ReadProperty <System.Single> ();
                    break;

                case "maxMotorTorque":
                    jointMotor2D.maxMotorTorque = reader.ReadProperty <System.Single> ();
                    break;
                }
            }
            return(jointMotor2D);
        }
コード例 #23
0
ファイル: DoorBehaviour.cs プロジェクト: stjahns/INTD450
    public void Close()
    {
        if (debug)
        {
            Debug.Log("CLOSING DOOR");
        }

        if (state != State.Closing)
        {
            JointMotor2D motor = new JointMotor2D();
            motor.motorSpeed = -doorSpeed;
            motor.maxMotorTorque = doorForce;
            doorSlider.motor = motor;
            doorSlider.useMotor = true;

            AudioSource.PlayClipAtPoint(closeClip, transform.position);
            state = State.Closing;
        }
    }
コード例 #24
0
ファイル: movearm.cs プロジェクト: rpappa/First-Brawl
 // Update is called once per frame
 void Update()
 {
     if(Input.GetKey(KeyCode.H)) {
         targetangle = -5f;
         lockarm = false;
     }
     if (Input.GetKey (KeyCode.J)) {
         targetangle = 30f;
         lockarm = false;
     }
     if (Input.GetKey (KeyCode.K)) {
         targetangle = 70f;
         lockarm = false;
     }
     HingeJoint2D hinge = GetComponent<HingeJoint2D> ();
     JointMotor2D m = new JointMotor2D ();
     float jointangle = hinge.jointAngle;
     //Debug.Log("Targetangle" + targetangle.ToString() + " hinge angle:" + jointangle.ToString());
     if (targetangle < hinge.jointAngle) {
         if(!lockarm) {
             m.motorSpeed = -150*speed;
         } else {
             m.motorSpeed = -150*speed*((Mathf.Abs(targetangle-jointangle))/50);
         }
     }
     if (targetangle > hinge.jointAngle) {
         if(!lockarm) {
             m.motorSpeed = 150*speed;
         } else {
             m.motorSpeed = 150*speed*((Mathf.Abs(targetangle-jointangle))/50);
         }
     }
     m.maxMotorTorque = 10000;
     hinge.motor = m;
     hinge.useMotor = true;
     if (Mathf.Abs (targetangle - jointangle) < 3) {
         lockarm = true;
     }
 }
コード例 #25
0
        public override void OnEnter()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (go != null)
            {
                _wj2d = go.GetComponent<WheelJoint2D>();

                if(_wj2d!=null)
                {
                    _motor = _wj2d.motor;
                    _suspension = _wj2d.suspension;
                }
            }

            SetProperties();

            if(!everyFrame)
            {
                Finish();
            }
        }
コード例 #26
0
ファイル: TruckController.cs プロジェクト: ValikLinnik/Truck
    private void SpeedHandler(float speedValue)
    {
        if (_wheels == null || _wheels.Length < 2)
            return;

        foreach (var item in _wheels)
        {
            if (item == null)
                continue;  

            if (!item.useMotor)
                item.useMotor = true;

            var tempMotor = new JointMotor2D();
            tempMotor = item.motor;

            if (speedValue == 0)
                tempMotor.motorSpeed = 0;
            else
                tempMotor.motorSpeed += TruckConfig.EngineAcceleration * speedValue * Time.deltaTime;
            
            item.motor = tempMotor;
        }
    }
コード例 #27
0
 private extern void set_motor_Injected(ref JointMotor2D value);
コード例 #28
0
 private extern void get_motor_Injected(out JointMotor2D ret);
コード例 #29
0
ファイル: Piston.cs プロジェクト: Fonserbc/ld33
 // Use this for initialization
 void Start()
 {
     motor = joint.motor;
 }
コード例 #30
0
 // Use this for initialization
 void Start()
 {
     motor = this.GetComponent<WheelJoint2D>().motor;
 }
コード例 #31
0
    // Use this for initialization
    void Start()
    {
        hinge = GetComponent<HingeJoint2D>();
        motor = hinge.motor;
		jointAngle = hinge.jointAngle;
    }
コード例 #32
0
		private extern void INTERNAL_get_motor(out JointMotor2D value);
コード例 #33
0
 private extern void INTERNAL_get_motor(out JointMotor2D value);
コード例 #34
0
 static public int get_maxMotorTorque(IntPtr l)
 {
     UnityEngine.JointMotor2D o = (UnityEngine.JointMotor2D)checkSelf(l);
     pushValue(l, o.maxMotorTorque);
     return(1);
 }
コード例 #35
0
 // Use this for initialization
 void Start()
 {
     joint = GetComponent<WheelJoint2D>();
     motor = new JointMotor2D();
     motor.maxMotorTorque = 10000;
 }
コード例 #36
0
    void Start()
    {
        curentNitroTimer = NitroTime;
        rigidbody2D = GetComponent<Rigidbody2D>();
        wheelJoints = GetComponents<WheelJoint2D>();
        motorBack = wheelJoints[0].motor;
        motorBack.motorSpeed = Speed; // скорость машини

        wheelJoints[0].motor = motorBack;
        wheelJoints[1].motor = motorBack;
    }
コード例 #37
0
 void Start()
 {
     joint = transform.Find("biker_arm_1").GetComponent<HingeJoint2D>();
     motor = new JointMotor2D();
     motor.maxMotorTorque = 1000;
     ColliderDetector[] detectors = GetComponentsInChildren<ColliderDetector>();
     foreach(ColliderDetector detector in detectors)
     {
         detector.TriggerEnter += onTriggerEnter;
     }
 }
コード例 #38
0
 private extern void INTERNAL_set_motor(ref JointMotor2D value);
コード例 #39
0
 static public int get_motorSpeed(IntPtr l)
 {
     UnityEngine.JointMotor2D o = (UnityEngine.JointMotor2D)checkSelf(l);
     pushValue(l, o.motorSpeed);
     return(1);
 }
コード例 #40
0
		private extern void INTERNAL_set_motor(ref JointMotor2D value);
コード例 #41
0
ファイル: Wheel.cs プロジェクト: Fonserbc/ld33
 // Use this for initialization
 void Start()
 {
     joint.connectedAnchor = transform.position;
     motor = joint.motor;
 }
コード例 #42
0
ファイル: com.cs プロジェクト: danielmayans/platformer
    // Use this for initialization
    void Start()
    {
        //set the center of mass of the car
        //Vector3 center = GetComponent<Rigidbody2D>().centerOfMass;
        //center.y -= 1;
        //GetComponent<Rigidbody2D>().centerOfMass = center;

        //get the wheeljoint components
        wheelJoints = gameObject.GetComponents<WheelJoint2D>();
        //get the reference to the motor of rear wheels joint
        motorBack = wheelJoints[0].motor;
        motorFront = wheelJoints[1].motor;
    }
コード例 #43
0
    void loadJsonJoints(JSONNode jsonJoints)
    {
        int JointCount = 0;

        for (int i = 0, numberOfJoints = jsonJoints.Count; i < numberOfJoints; i++){
            JSONNode jsonJoint = jsonJoints[i];
            int jointType = jsonJoint["jointType"].AsInt;

            GameObject bodyA = loadedObjects[jsonJoint["bodyA"].AsInt];
            GameObject bodyB = loadedObjects[jsonJoint["bodyB"].AsInt];

            JSONNode localAnchorA = jsonJoint["localAnchorA"];
            Vector2 anchorA = new Vector2(localAnchorA[0].AsFloat / RATIO, -localAnchorA[1].AsFloat / RATIO);
            JSONNode localAnchorB = jsonJoint["localAnchorB"];
            Vector2 anchorB = new Vector2(localAnchorB[0].AsFloat / RATIO, -localAnchorB[1].AsFloat / RATIO);
            bool collideConnected = jsonJoint["collideConnected"].AsBool;
            string userData = jsonJoint["userData"].Value;

            if (jointType == (int) JointTypes.JOINT_DISTANCE || jointType == (int) JointTypes.JOINT_ROPE){
                DistanceJoint2D joint = bodyA.AddComponent<DistanceJoint2D>();
                joint.connectedBody = bodyB.GetComponent<Rigidbody2D>();
                joint.anchor = anchorA;
                joint.connectedAnchor = anchorB;

                // distance joint
                if (jsonJoint["length"] != null){
                    joint.distance = jsonJoint["length"].AsFloat / RATIO;
                    joint.maxDistanceOnly = true;
                }
                // rope joint
                else if (jsonJoint["maxLength"] != null){
                    joint.distance = jsonJoint["maxLength"].AsFloat / RATIO;
                }

                joint.enableCollision = collideConnected;
                joint.name += '_';
                joint.name += userData.Length > 0 ? userData : "joint" + JointCount++;
            }
            else if (jointType == (int) JointTypes.JOINT_REVOLUTE){
                HingeJoint2D joint = bodyA.AddComponent<HingeJoint2D>();
                joint.connectedBody = bodyB.GetComponent<Rigidbody2D>();
                joint.anchor = anchorA;
                joint.connectedAnchor = anchorB;
                joint.enableCollision = collideConnected;
                joint.name += '_';
                joint.name += userData.Length > 0 ? userData : "joint" + JointCount++;

                // limits are not working properly
                bool enableLimits = jsonJoint["enableLimit"].AsBool;
                float referenceAngle = -jsonJoint["referenceAngle"].AsFloat;
                float angleBetweenBodies = Mathf.Atan2(bodyB.transform.position.y - bodyA.transform.position.y,
                                                      bodyB.transform.position.x - bodyA.transform.position.x) * 180 / Mathf.PI;
                float upperAngle = -jsonJoint["lowerAngle"].AsFloat;
                float lowerAngle = -jsonJoint["upperAngle"].AsFloat;
                bool enableMotor = jsonJoint["enableMotor"].AsBool;
                float motorSpeed = -jsonJoint["motorSpeed"].AsFloat;
                float maxMotorTorque = jsonJoint["maxMotorTorque"].AsFloat;

                joint.useLimits = enableLimits;
                JointAngleLimits2D limits = new JointAngleLimits2D();
                limits.max = angleBetweenBodies + upperAngle;
                limits.min = angleBetweenBodies + lowerAngle;
                joint.limits = limits;
                joint.useMotor = enableMotor;
                JointMotor2D motor = new JointMotor2D();
                motor.maxMotorTorque = maxMotorTorque;
                motor.motorSpeed = motorSpeed;
                joint.motor = motor;
            }
            else if (jointType == (int) JointTypes.JOINT_WHEEL){
                WheelJoint2D joint = bodyA.AddComponent<WheelJoint2D>();
                joint.connectedBody = bodyB.GetComponent<Rigidbody2D>();
                joint.anchor = anchorA;
                joint.connectedAnchor = anchorB;
                joint.enableCollision = collideConnected;
                joint.name += '_';
                joint.name += userData.Length > 0 ? userData : "joint" + JointCount++;

                bool enableMotor = jsonJoint["enableMotor"].AsBool;
                float motorSpeed = -jsonJoint["motorSpeed"].AsFloat;
                float maxMotorTorque = jsonJoint["maxMotorTorque"].AsFloat;
                float dampingRatio = jsonJoint["dampingRatio"].AsFloat;
                float frequency = jsonJoint["frequencyHZ"].AsFloat;
                JSONNode localAxisA = jsonJoint["localAxisA"];
                float angle = Mathf.Atan2(-localAxisA[1].AsFloat, localAxisA[0].AsFloat) * 180 / Mathf.PI;

                joint.useMotor = enableMotor;
                JointMotor2D motor = new JointMotor2D();
                motor.maxMotorTorque = maxMotorTorque;
                motor.motorSpeed = motorSpeed;
                joint.motor = motor;

                JointSuspension2D suspension = new JointSuspension2D();
                suspension.dampingRatio = dampingRatio;
                suspension.frequency = frequency;
                suspension.angle = angle;
                joint.suspension = suspension;
            }
            else if (jointType == (int) JointTypes.JOINT_PRISMATIC){
                SliderJoint2D joint = bodyA.AddComponent<SliderJoint2D>();
                joint.connectedBody = bodyB.GetComponent<Rigidbody2D>();
                joint.anchor = anchorA;
                joint.connectedAnchor = anchorB;
                joint.enableCollision = collideConnected;
                joint.name += '_';
                joint.name += userData.Length > 0 ? userData : "joint" + JointCount++;

                bool enableLimits = jsonJoint["enableLimit"].AsBool;
                float referenceAngle = -jsonJoint["referenceAngle"].AsFloat;
                float upperTranslation = jsonJoint["upperTranslation"].AsFloat / RATIO;
                float lowerTranslation = jsonJoint["lowerTranslation"].AsFloat / RATIO;
                bool enableMotor = jsonJoint["enableMotor"].AsBool;
                float motorSpeed = -jsonJoint["motorSpeed"].AsFloat;
                float maxMotorTorque = jsonJoint["maxMotorTorque"].AsFloat;
                JSONNode localAxisA = jsonJoint["localAxisA"];
                float angle = Mathf.Atan2(-localAxisA[1].AsFloat, localAxisA[0].AsFloat) * 180 / Mathf.PI;

                joint.useLimits = enableLimits;
                JointTranslationLimits2D limits = new JointTranslationLimits2D();
                limits.max = upperTranslation;
                limits.min = lowerTranslation;
                joint.limits = limits;
                joint.useMotor = enableMotor;
                JointMotor2D motor = new JointMotor2D();
                motor.maxMotorTorque = maxMotorTorque;
                motor.motorSpeed = motorSpeed;
                joint.motor = motor;
                joint.angle = angle;
            }
        }
    }
コード例 #44
0
 private void INTERNAL_set_motor(ref JointMotor2D value)
 {
     throw new NotImplementedException("なにこれ");
 }
コード例 #45
0
 /// <summary>
 /// Write the specified value using the writer.
 /// </summary>
 /// <param name="value">Value.</param>
 /// <param name="writer">Writer.</param>
 public override void Write(object value, ISaveGameWriter writer)
 {
     UnityEngine.JointMotor2D jointMotor2D = (UnityEngine.JointMotor2D)value;
     writer.WriteProperty("motorSpeed", jointMotor2D.motorSpeed);
     writer.WriteProperty("maxMotorTorque", jointMotor2D.maxMotorTorque);
 }