Quaternion getRotationByMapDir(MapDir dir) { Quaternion q = Quaternion.identity; switch (dir) { case MapDir.UP: break; case MapDir.DOWN: q = Quaternion.Euler(0, 180, 0); break; case MapDir.LEFT: q = Quaternion.Euler(0, 270, 0); break; case MapDir.RIGHT: q = Quaternion.Euler(0, 90, 0); break; default: break; } return(q); }
IEnumerator Fall(float mSpeed, MapDir dir) { Vector3 moveVector = new Vector3(DirTable[dir].x, DirTable[dir].y, 0); for (float timer = 0.0f; timer < 1 / mSpeed; timer += Time.deltaTime) { transform.position += moveVector * Time.deltaTime; yield return 0; } }
bool Moveship(MapDir dir) { if(drill.isDigging) return false; Vector3 mSpeed = Vector3.zero; //if (dir == MapDir.Up) //speed down // mSpeed /= 2; //if (dir == MapDir.Down) //mSpeed *= 1.5f; Index ship = new Index(Mathf.RoundToInt(transform.position.x) + map.size / 2, Mathf.RoundToInt(transform.position.y)); Index moveTo = ship + DirTable[dir]; if (map.IsTileEmpty(ship + new Index(0, -1)) || map.IsTileLava(ship + new Index(0, -1))) { isFall = true; } else{ isFall = false; } if (map.IsTileDust(moveTo)) { if (drill.toolLeve < Tables.TerrainTable["Dust"].leve) return false; drill.Dig(moveTo, map); return true; } if (map.IsTileRock(moveTo)) { if (drill.toolLeve < Tables.TerrainTable["Rock"].leve) return false; drill.Dig(moveTo, map); } return true; }
Quaternion getTurnRotationByMapDir(MapDir dir1, MapDir dir2) { Quaternion q = Quaternion.identity; if (dir1 == MapDir.UP && dir2 == MapDir.LEFT) { } else if (dir1 == MapDir.UP && dir2 == MapDir.RIGHT) { q = Quaternion.Euler(0, 90, 0); } else if (dir2 == MapDir.DOWN && dir1 == MapDir.LEFT) { q = Quaternion.Euler(0, 270, 0); } else if (dir1 == MapDir.DOWN && dir2 == MapDir.RIGHT) { q = Quaternion.Euler(0, 180, 0); } return(q); }