コード例 #1
0
ファイル: Cruncher.cs プロジェクト: syogesh/Lights
 void OnTriggerEnter2D(Collider2D c)
 {
     if (c.gameObject == Player.S.gameObject)
     {
         Player.S.TakeDamage(damage);
         velocity = Vector3.zero;
         state = CruncherState.Returning;
     } else if (LayerMask.LayerToName(c.gameObject.layer) == "Terrain") {
         velocity = Vector3.zero;
         state = CruncherState.Returning;
     }
     MainCam.ShakeForSeconds(0.1f);
 }
コード例 #2
0
ファイル: Cruncher.cs プロジェクト: syogesh/Lights
 // Update is called once per frame
 void FixedUpdate()
 {
     switch(state) {
     case CruncherState.Waiting:
         var hit = Physics2D.BoxCast(transform.position, size, 0, crunchAcceleration.normalized, triggerDistance, collideMask);
         if (hit.collider != null && hit.collider.gameObject == Player.S.gameObject) {
             state = CruncherState.Crunching;
         }
         break;
     case CruncherState.Crunching:
         velocity += crunchAcceleration;
             transform.position += velocity * Time.fixedDeltaTime;
         break;
     case CruncherState.Returning:
         transform.position = Vector3.MoveTowards(transform.position, start, returnVelocity * Time.deltaTime);
         if (transform.position == start) {
             state = CruncherState.Waiting;
         }
         break;
     default:
         return;
     }
 }
コード例 #3
0
ファイル: Cruncher.cs プロジェクト: syogesh/Lights
    // Rigidbody2D r;
    // Use this for initialization
    void Start()
    {
        start = transform.position;
        velocity = Vector3.zero;
        collideMask = 1 << LayerMask.NameToLayer("Player") | 1 << LayerMask.NameToLayer("Terrain");
        // r = GetComponent<Rigidbody2D>();
        Physics2D.IgnoreCollision(GetComponent<Collider2D>(), Navi.S.GetComponent<Collider2D>());
        //if (crunchAcceleration.x == 0) {
        //	r.constraints |= RigidbodyConstraints2D.FreezePositionX;
        //} else if (crunchAcceleration.y == 0) {
        //	r.constraints |= RigidbodyConstraints2D.FreezePositionY;
        //}
        float radius = GetComponent<CircleCollider2D>().radius;
        size = new Vector2(radius, radius);

        transform.GetComponent<Renderer>().sortingLayerName = "Default";
        transform.GetComponent<Renderer>().sortingOrder = 15;

        Events.Register<OnDeathEvent>(() => {
            transform.position = start;
            velocity = Vector3.zero;
            state = CruncherState.Waiting;
            //r.velocity = Vector2.zero;
        });
    }