Last active
January 1, 2016 15:19
-
-
Save WestHillApps/8163360 to your computer and use it in GitHub Desktop.
Unity4.3のRigidBody2DでKinematicがONだと、トリガー系に反応しなくなるバグ回避用
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
/// <summary> | |
/// Unity4.3のRigidBody2DでKinematicがONだと、トリガー系に反応しなくなるバグ回避用 | |
/// このスクリプトが有効な間、KinematicがOFFでも強制的に物理移動しなくする | |
/// </summary> | |
[RequireComponent (typeof(Rigidbody2D))] | |
public class NonKinematic2D : MonoBehaviour | |
{ | |
Transform myTransform; | |
Rigidbody2D myRigidBody2D; | |
Vector3 fixedPosition; | |
float orgGravityScale; | |
void Awake () | |
{ | |
#if !UNITY_4_3 | |
// 4.3以降は直っているので使わない | |
rigidbody2D.isKinematic = true; | |
enabled = false; | |
return; | |
#endif | |
myRigidBody2D = rigidbody2D; | |
myRigidBody2D.isKinematic = false; | |
myTransform = transform; | |
fixedPosition = myTransform.localPosition; | |
} | |
void Update () | |
{ | |
myRigidBody2D.velocity = Vector3.zero; | |
myRigidBody2D.angularVelocity = 0; | |
myTransform.localPosition = fixedPosition; | |
} | |
void OnEnable () | |
{ | |
orgGravityScale = myRigidBody2D.gravityScale; | |
myRigidBody2D.gravityScale = 0f; | |
} | |
void OnDisable () | |
{ | |
myRigidBody2D.gravityScale = orgGravityScale; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment